2015年1月15日木曜日

Unityである一点を中心にカメラを旋回させる方法

ゲームである地点を中心にカメラを旋回させたい場合ってありますよね。

そのやり方が意外と簡単だったのでご紹介します。



まずは、カメラが旋回しているのが分かりやすいようなモノを配置します。


次に、カメラを旋回させる中心点にEmptyを置いて、カメラをその子供にします。


こうして、中心点とカメラを親子関係にするのがポイントで、こうしておけば中心点を回転させると、そこを中心にカメラが旋回するというわけです。


後は、キー入力やマウスの操作で中心点を回転させるスクリプトを書けばOKです。

例えばこんな感じとか。



#pragma strict

//キー入力で回転させる距離
public var keyDistance : float;

//マウスで回転させる距離
public var mouseDistance : float;

//前のドラッグ位置
private var oldPos : Vector3;

//ドラッグ中かどうか
private var isDrag = false;

function Update () {

  //キー入力で回転
  gameObject.transform.Rotate ((Input.GetAxis("Vertical") * keyDistance ), (Input.GetAxis("Horizontal") * keyDistance ), 0 );

  if (Input.GetMouseButtonDown(0) || isDrag) {
 
    if (isDrag) {
      //前のドラッグ位置との差分を取得
      var diff = Input.mousePosition - oldPos;
   
      //差分だけ回転させる
      gameObject.transform.Rotate(diff.y * mouseDistance, diff.x * mouseDistance, 0 );
   
    }
    //現在のポジションを保存
    oldPos = Input.mousePosition;
    isDrag = true;
  }

  if (Input.GetMouseButtonUp(0)) {
    isDrag = false;
  }

}



スクリプトのプロパティはこんな感じ




実行してみると、上下左右キーやマウスのドラッグでカメラが旋回しました。





親子関係にするってことさえ分かれば簡単ですね。

このようなカメラの動かし方はよくあると思うので覚えておくと良いですね。



『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル

1 件のコメント:

  1. 次に、カメラを旋回させる中心点にEmptyを置いて、カメラをその子供にします。 こうして、中心点とカメラを親子関係にするのがポイントで、こうしておけば中心点を回転させると、そこを中心にカメラが旋回するというわけです。 後は、キー入力や ... 1カメラ.blogspot.com

    返信削除