Unity(Rigidbodyで動かそう)

Unity

Rigidbodyを使ってオブジェクトを動かしてみよう。

床の作成

createからcubeを作成し、scaleをxとzに25を入れて以下のように配置する。
(alt+ドラッグで見下ろすアングルにする。その際x軸が右を向くように調整する)

ボールの作成

createからsphereを作成し、positionのyを10にし、赤のmaterialを付与する

Rigidbodyの付与

sphereを選択した状態で、AddComponentからRigidbodyを付与する。

カメラの設定

Main Cameraを選択し、上のGameObjectからAlign With Viewを選択する。

実行

再生ボタンを押して実行してみよう。ボールがストンと落下すればOKだ。

スクリプトの追加

Ball.csを以下のように作成する。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball : MonoBehaviour {
    Rigidbody rd;
    // Start is called before the first frame update
    void Start() {
        //Rigidbodyコンポーネントの取得
        rd = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update() {
        //左矢印キーを押し下げした際に左方向に力を加える
        if (Input.GetKeyDown(KeyCode.LeftArrow)) {
            rd.AddForce(Vector3.left * 100f);
        }
        //右矢印キーを押し下げした際に右方向に力を加える
        if (Input.GetKeyDown(KeyCode.RightArrow)) {
            rd.AddForce(Vector3.right * 100f);
        }
        //上矢印キーを押し下げした際にz軸正方向の速度設定する
        if (Input.GetKeyDown(KeyCode.UpArrow)) {
            rd.velocity = Vector3.forward * 10f;
        }
        //下矢印キーを押し下げした際にz軸負方向の速度設定する
        if (Input.GetKeyDown(KeyCode.DownArrow)) {
            rd.velocity = Vector3.back * 10f;
        }
        //スペースキーを押し下げした際に上方向の速度設定をする
        if (Input.GetKeyDown(KeyCode.Space)) {
            rd.velocity = Vector3.up * 10f;
        }
        //Bキーを押している間、速度を減少させる。
        if (Input.GetKey(KeyCode.B)) {
            rd.velocity *= .9f;
        }
    }
}

スクリプトのアタッチ&実行

Ball.csスクリプトを作成したらsphereにドラッグしてアタッチ。
そして実行する。
AddForceによる挙動と、velocityによる挙動の違いを確認すること。

コメント

タイトルとURLをコピーしました