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

1

今回は「Plane」を上下に動かしてみましょう!
Hierarchyウィンドウで Create > 3D Object > Plane で「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>