表示できるようになったスプライトを任意の位置に表示したり、アニメーション(カードの表裏を切り替える)を任意に発動するには、しシーン内オブジェクトに対して、スクリプトを割り当てます。

まずは、私の場合、神様的なオブジェクトを作ります。シーン内の全ての親のようなオブジェクトです。
[GameObject]->[Create Empty]で空オブジェクトを追加し、名前を“Card”“God”に変更します。

そして、Assets配下に例えば「Scripts」というフォルダを作成し、次のような二つのスクリプトを置きます。

God.cs

using UnityEngine;
using System.Collections;

public class God : MonoBehaviour {
  public static bool isLeft;
  public static bool isRight;
  public static bool isUp;
  public static bool isDown;
  public static bool isReverse;

  public void Start()
  {
  }

  public void Update() 
  {
    //カーソル左、右、上、下、スペースが押されることで下記フラグがtrueになる
    isLeft = false;
    isRight = false;
    isUp = false;
    isDown = false;
    isReverse = false;

    if(Input.GetKey(KeyCode.LeftArrow)){
      isLeft = true;
    }

    if(Input.GetKey(KeyCode.RightArrow)){
      isRight = true;
    }

    if(Input.GetKey(KeyCode.UpArrow)){
      isUp = true;
    }

    if(Input.GetKey(KeyCode.DownArrow)){
      isDown = true;
    }
    
    if(Input.GetKeyUp(KeyCode.Space)){
      isReverse = true;
    }
  }
}

Card.cs

using UnityEngine;
using System.Collections;

public class Card : MonoBehaviour {

  private OTAnimatingSprite reverseSprite;

  private float moveSpeed = 100;
  private int moveDirX;
  private int moveDirY;
  private Vector3 movement;
  private bool isReversed;
  
  void Awake() 
  {
  }
  
  void Start()
  {
    reverseSprite = GetComponent<OTAnimatingSprite>();
    isReversed = true;
  }
  
  public void Update ()
  {    
    moveDirX = 0;
    moveDirY = 0;

    //キー押下状態によって各種制御する

    if(God.isLeft){
      moveDirX = -1;
    }
    
    if(God.isRight){
      moveDirX = 1;
    }
    
    if(God.isUp){
      moveDirY = 1;
    }
    
    if(God.isDown){
      moveDirY = -1;
    }
    
    if(God.isReverse){
      reverse();
    }

    UpdateMovement();
  }

  //移動
  void UpdateMovement() 
  {
    movement = new Vector3(moveDirX, moveDirY,0f);
    movement *= Time.deltaTime*moveSpeed;
    transform.Translate(movement.x,movement.y, 0f);
    reverseSprite.transform.position = transform.position;
  }

  //裏返し
  void reverse()
  {
    int frame;

    if(isReversed){
      reverseSprite.Play("club01");
    }else{
      reverseSprite.Play("reversed");
    }

    isReversed = (!isReversed);
  }
}

「Project」内のそれぞれのスクリプトを「Hierarchy」タブの対応するオブジェクト(Card.cs->Cardオブジェクト, God.cs->Godオブジェクト)へドラッグアンドドロップします。
これでゲーム開始させると、上下左右キーでカードが移動し、スペースキーでカードが裏返ります。

2 Comments

  1. fk
    Posted 2013/06/20 at 5:23 PM | Permalink

    はじめまして
    Unityの記事、参考にさせていただいています

    >>[GameObject]->[Create Empty]で空オブジェクトを追加し、名前を”Card”に変更します。
    こちらの名前はGodではないでしょうか?

    #Unityはオブジェクトやプロパティが多いですね。慣れてくればC++等での開発よりも楽になるのでしょうか。ちょっと自信がなくなってきました

    • Yshys Tsj
      Posted 2013/06/23 at 5:33 PM | Permalink

      Fkさん
      はじめまして。参考にしていただけているとのこと、大変嬉しいです。ありがとうございます。

      にも関わらず、ミスがあり、すみません。ご指摘の通り”Card”ではなく、”God”です。

      私がUnityに感じるメリットは一つのコードで複数のプラットフォームで動くプログラムが書ける、というところです。(#ifとかなしに)
      私もまだまだ苦労していますが、身につければ武器になると思い、Unityにしがみついているところです!

Yshys Tsj にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>