UNITY
P1

【UNITY】3Dオブジェクトを上下(左右)に動かしてみる

【UNITY】3Dオブジェクトを上下(左右)に動かしてみる

1
今回こんかいは「Plane」を上下にうごかしてみましょう!
Hierarchyウィンドウで Create > 3D Object > Plane で「Plane」を作成さくせいします。
2
Planeが追加ついかされました。左ののようにSceneウィンドウにも表示ひょうじされたとおもいます。
3
1. ←Projectウィンドで Create > C# Script を選択せんたくします。

2. 今回こんかいは ↓のように「PlaneController」という名前なまえにします。

※ファイル名とクラス名がちがうとエラーになるのでかならずおな名前なまえにしましょう。(ファイル作成さくせいの後にファイル名だけを変更へんこうすると、よくこの問題もんだいがおきます。クラス名はファイルを作成さくせいした時に自動じどうでファイル名とおなじものになります。)
4
作った「PlaneController」スクリプトをうごかしたいオブジェクト(ここではPlane)にドラッグして適応てきおうさせます。
先ほど作った、「PlaneController」をひらき、以下いかのコーディングをします。コーディングに間違まちがいがなければ、ゲームを再生さいせいするとオブジェクトが上下や左右にうごきはじめます。
<pre><code class="prettyprint"><!-- [et_pb_line_break_holder] -->public class PlaneController : MonoBehaviour {<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> Vector3 objPosition; // オブジェクトの位置を記録<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> // Use this for initialization<!-- [et_pb_line_break_holder] --> void Start () {<!-- [et_pb_line_break_holder] --> // 最初に置かれた場所を代入 <!-- [et_pb_line_break_holder] --> objPosition = this.transform.position;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> // Update is called once per frame<!-- [et_pb_line_break_holder] --> void Update () {<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] --> // Sinを使ってY軸方向い移動させる <!-- [et_pb_line_break_holder] --> this.transform.position = new Vector3(objPosition.x, Mathf.Sin(Time.time) * 2.0f + objPosition.y, objPosition.z );<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --></code></pre>
X方向に動かすには
<pre><code class="prettyprint"> this.transform.position = new Vector3(Mathf.Sin(Time.time) * 2.0f + objPosition.x, objPosition.y, objPosition.z );</code></pre>
Z方向に動かすには
<pre><code class="prettyprint">  this.transform.position = new Vector3(objPosition.x, objPosition.y, Mathf.Sin(Time.time) * 2.0f + objPosition.z );</code></pre>
上の方法ほうほうでは、キャラクターが上にって移動いどうさせたいときなどは、以下いかのようにRigidbodyを使つかったコードを記述きじゅつします。

くわしくはこちら→

上記じょうき方法ほうほう は衝突計算しょうとつけいさんなので物理計算ぶつりけいさんともなわない時にしか使つかえません。

<script src="https://gist.github.com/hulmoHub/60893ad145971cd77610b3a199101f31.js"></script>