Unity5で対象物を一定速度でドラッグ&ドロップ

Unity5で、タップした位置に対象物を移動。

タップした位置に、パズルのピースのようにものを移動する場合。

using UnityEngine;
using System.Collections;

public class dragSample : MonoBehaviour {
    float touchX;
    float touchY;

    void Update(){
        touchX = Input.mousePosition.x;
        touchY = Input.mousePosition.y;

        if(Input.GetMouseButton(0)){
            OnDrag();
        }
    }

    void OnDrag(){

        gameObject.transform.position = Vector3.MoveTowards (gameObject.transform.position,Camera.main.ScreenToWorldPoint(new Vector3(touchX,touchY,10.0f)), 0.1f);
    }
}

解説

  • Camera.main.ScreenToWorldでタップ位置の座標に変換
  • MoveTowordsで、対象物と、持って行きたい位置、それとそこまで移動する速度

マウスのドラッグ&ドロップするように移動する場合は、

MoveTowordsを除けばOK、下記のように。

transform.position = Camera.main.ScreenToWorldPoint(new Vector3(touchX,touchY,10.0f));

Unity5 rigidbody2Dで、x,y,zの軸を固定する

x,y,zのいずれも固定する場合。

GetComponent<Rigidbody2D> ().constraints = RigidbodyConstraints2D.FreezeAll;

固定を解除する場合。

GetComponent<Rigidbody2D> ().constraints = RigidbodyConstraints2D.None;

z軸(回転)以外だけ解除する場合。

GetComponent<Rigidbody2D> ().constraints = RigidbodyConstraints2D.FreezeRotation;

スクリーンショット 2016-04-24 22.11.20

条件式で、どのタイプで固定されているか判別する場合

if( GetComponent<Rigidbody2D> ().constraints == RigidbodyConstraints2D.FreezeAll){
  // すべて固定されていたら
}

Unity5(C#) 2Dで物理ゲーム使う際によく使うメソッド一覧


回転角度取得

transform.localEulerAngles.z

左右方向への速度

GetComponent<Rigidbody2D> ().velocity.x

上下方向への速度

GetComponent<Rigidbody2D> ().velocity.y

全方向への速度を取得

GetComponent<Rigidbody2D> ().velocity.magnitude

重力や速度が早すぎてものを貫通する時等の制御に。

指定角度への力を加える

void Boost(float,direction,float speed){
    Vector2 v;
    v.x = Mathf.Cos(Mathf.Deg2Rad * direction) * speed;
    v.y = Mathf.Sin(Mathf.Deg2Rad * direction) * speed;
    GetComponent<Rigidbody2D> ().AddForce (v); //力加算
}

NGUIのUIRootを別プロジェクトのUnityからコピーする。

忘れないようにメモ。

1. コピー元のUIRoot等で使っている(アトラスやテクスチャ等)素材をフォルダ等をコピー

2. コピーしたいもの使っているシーンのsceneファイルをコピー

3. コピー先で、コピーしたシーンファイルを起動し、UIRootをまるごと、ドラッグ&ドロップで、prefab化

4. あとはそのprefabを配置して自由に使える。

Unity 初歩的ミス 早見表

1. iOS/Androidでビルドできない

  • バンドル名や、アプリ名を設定したか。Player Settingで確認。
  • xcodeでビルドできない場合は、UnityのFree版でスプラッシュ画像を等をいじっていないか確認。(Pro版大丈夫)

2. リドゥ・アンドゥ(一つ前、戻す前に)ができない

  • ファイルの削除は本当にもどせないので注意!
  • プログラム自体がエラーなど吐いていると、リドゥ・アンドゥ自体がきかなくなったりする(再起動などしてみる)
  • capsロックになっていない?
  • オブジェクトのアクティブON/OFFをカスタマイズしたショートカットにしていると、その分は戻せない。

3. Materialの編集ができない。

  • Materialのインスペクタのアイコン部分をクリックするとアコーディオンが開ますw

スクリーンショット 2015-07-27 23.53.38

4. Mesh Colliderをいくら設定しても、あたり判定がきかない。

“Unity 初歩的ミス 早見表” の続きを読む