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による挙動の違いを確認すること。
コメント