上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Unity】タッチでゲームオブジェクトを動かす&画面内に収める方法

unity

やっと来ましたね、この時が…え?何か分からないって?
そりゃアレでしょ、アレ「Unity講座」の記事ですよ(笑)。プログラミングの記事がメインなのに、まだ何も関係記事がないと言うことで(本末転倒)早速書いていきたいと思います。




【Unity】タッチでゲームオブジェクトを動かす&画面内に収める方法

この記事のテーマともなっていますが、これは自分が一作目を作る際にイキナリ詰まった問題です。ではどうすればいいのか?
まず、スマホのタッチ=マウスのクリックと思って頂いてけっこうです。
これは後々アプリを開発する上で重要です。プラットフォームが多いゲームエンジンは、PCとAndoroid間でのプログラムの互換性があるのでスマホのタッチ=マウスのクリックと言うような仕組みなのです。

では本題に
このプログラムでまず、タッチでゲームオブジェクトを動かすが実現できます。
private Vector3 screenPoint;
private Vector3 offset;

void OnMouseDown() {
	
	this.screenPoint = Camera.main.WorldToScreenPoint(transform.position);
	this.offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,     Input.mousePosition.y, Input.mousePosition.z));
	}

void OnMouseDrag() {
	
        Vector3 currentScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z);
        Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenPoint) + this.offset;
	transform.position = currentPosition;
	}


噛み砕いて説明すると
タッチまたはクリックした位置を保持し、ゲームオブジェクトの位置に適応させる(transformで)そして、移動量の差分でタッチしながら動かしている。
と言うわけです。

また、これの応用で

	this.offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,                    Input.mousePosition.y, Input.mousePosition.z));

        Vector3 currentScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z);

この「Input.mousePosition」の部分を一部「screenPoint」に変えることで
「x方向だけ」等の限定的な動きができます。 




【Unity】画面内に収める方法

ゲームオブジェクトにRigidbodyを適応させると、上記で書いたプログラムでは画面外に出てしまいます。これを防ぐには

Updateの中に
    if (gameObject.transform.position.x < 画面範囲) {
	    gameObject.transform.position = new Vector3(画面範囲f, 画面範囲f, 画面範囲f);
	     }
	if (gameObject.transform.position.x > 画面範囲) {
	    gameObject.transform.position = new Vector3(画面範囲f, 画面範囲f, 画面範囲f);
	     }

を入れます。※これはX方向のみのスクリプトです。

以上如何でしたでしょうか?
初めての解説記事で至らぬ点だらけ、一年後に見たら削除必死でしょうが(笑)
そこらへんも含めて、今後もこういった記事を書いていきたいです。


お手数ですがクリックお願いします!!↓

FC2Blog Ranking

関連記事
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。