Unity オブジェクトを動かす Rigidbody編 [v5.5.0f3]

まずはオブジェクトを生成してみましょう

Unityにおいてオブジェクトを作り出すのはとても簡単です

 

  1. Hierarchyエリアを右クリック => 3D Objectを選択
  2. ゲーム画面に出したいオブジェクトを選択(今回はCube)f:id:gameddd:20170125121838p:plain

     

これで、立方体が生成されます

f:id:gameddd:20170125122027p:plain

ここで作成したCubeのステータスの説明です

UnityではInspectorがオブジェクトのステータスを表示してくれます

 

①Transform

Position    オブジェクトのある位置                                                 

Rotation   オブジェクトの回転位置                                             

Scale        オブジェクトの大きさ

 

②Cube(Mesh Filter)   

Mesh   この項目は3Dオブジェクトを生成する上でな くてはならないものになります

                 簡単に言うとMeshとは、型紙のようなものです

                 なので、形を変えたければこれをいじれば根本的な形が変わります

 

③Box Collider

Is Trigger   =>   チェックをつけることにより、物理演算をしなくなる

Material     =>   物理演算にこちらの好きな機能を追加するために追加する項目(追加しない場合普通の物理演算)

Center        =>   コライダーのローカル座標を指定

Size            =>   コライダーの大きさを指定

 

④Mesh Renderer

Cast Shadows  =>  ライトによる影の有無

Receive Shadows  =>  影を表示するか

Motion Vectors  =>  レンダリング時にどれをメインにレンダリングするか

Materials  =>  モデルと一緒にレンダリングするマテリアルのリスト

 

以下のものは使うときに随時説明します

 

Rigidbody

前回作ったtestのスクリプトを使用してオブジェクトを動かす処理を書いていきます

 

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

//Rigidbodyの種類別動き
public class test : MonoBehaviour {

Rigidbody RB;//Rigidbodyの入れ物
Vector3 GO;//最初の位置

void Start () {

RB = GetComponent<Rigidbody>();//CubeにアタッチされてるRigidbodyを取得
GO = this.gameObject.transform.position;//最初の位置を取得
}

void Update () {
//元の位置に戻す
if (Input.GetKeyDown(KeyCode.Space))//1で動く
transform.position = GO;

//velocity
//速度の変更する移動
if(Input.GetKeyDown(KeyCode.Alpha1) )//1で動く
RB.velocity = Vector3.forward * 0.1f;

//position
//位置を変更する移動
if (Input.GetKeyDown(KeyCode.Alpha2))//2で動く
RB.position = Vector3.forward * 0.1f;

//----------------AddForece-----------------
//力を加える
if (Input.GetKeyDown(KeyCode.Alpha3))//3で動く
RB.AddForce(Vector3.forward * 0.1f);

//Mode Force = 継続的な力
if (Input.GetKeyDown(KeyCode.Q))//Qで動く
RB.AddForce(Vector3.forward * 0.1f, ForceMode.Force);

//Mode Impulse == 瞬間的な力
if (Input.GetKeyDown(KeyCode.W))//Wで動く
RB.AddForce(Vector3.forward * 0.1f, ForceMode.Impulse);

//Mode VelocityChange == 瞬間的な力(質量無視)
if (Input.GetKeyDown(KeyCode.E))//Eで動く
RB.AddForce(Vector3.forward * 0.1f, ForceMode.VelocityChange);
}
}

 まずは、こちらのスクリプトをコピペして動かしてみてください

うごかないと、いう方は

http://ux.getuploader.com/Unity_gameddd/download/1/New+Unity+Project.zip

こちらからダウンロードしていただければ動かせると思います