Unity5でゲームオブジェクト実践

長文には折り畳みを使用しています。

Unity5でゲームオブジェクト実践

Unity5でスクリプト実践2の続きではあります。
Unityの開発画面と用語説明
  1. Main cameraを設定する
  2. CUBEを作成する
  3. マテリアルを設定する
  4. materialをCubeに設定する
  5. Cubeにスクリプトを設定する
  6. ゲームオブジェクトを動かしてみる1
  7. ゲームオブジェクトを動かしてみる2
  8. ゲームオブジェクトの位置などについて

メニューにもどる

Main cameraを設定する

新しいプロジェクトを作ります。3Dで作成します
表示が2Dの場合3Dに表示にしてください。
Sceanビューの上部にある「2D」ボタンをクリックして2D表示をOFFにしてください。Unityの開発画面と用語説明

...

CUBEを作成する

GameObjectメニューの3DObject>Cubeをメニューから選択

...

マテリアルを設定する

Hierarchyから作成したCUBEを選択後、

...



materialをCubeに設定する

ドラッグするだけ。色が付きます。

...

新しくmyScriptを作成しておきます。

Cubeにスクリプトを設定する

material同様にCUBEに対してドラッグします。

...

ゲームオブジェクトを動かしてみる1

toransform変数で座標変更するスクリプト例
<略>
void Start(){
Vecter3 p = transform.position;
p.x=10;
transform . position =p;
}
<略>メソッド内で全てを扱う例



MonoBehaviourが持つ変数に「transform」があります。

「transform」はTransform型の変数(プロパティ)でゲームオブジェクトの位置やマテリアルなどさまざまな値にアクセスする為のものです。(transformはプロパティ)
■プロパティ: 中(実装側)からはメソッドのように扱え、外(利用側)からはメンバー変数のように見えるもの。
簡単に言うと、"フィールドと、そのフィールドを操作するメソッドがセットになったもの。

trs.JPG
Inspectorをみると様々な設定がゲームオブジェクトに対して存在していることがわかる。

「Transform」というクラスのインスタンスが用意されている。
「transform」プロパティがある。



Vecter3 p = transform.position;
Vecter3型の変数pを宣言し、transform(Transform型)が持つ変数である「position」という値を入れています。
Vecter3型はベクトル座標を表した型で float型のX,Y,Zの値を格納できます。
float x =transform.position.x;


※transformとpositionをピリオドでつなぐことで型の中にある変数にアクセスするため。
ピリオドでつなぐことで型の中にある変数の変数の型の・・・と奥深くまでアクセスすることができます。

transform . position =p;
「p」には現在のゲームオブジェクトのベクトル座標が入っている(transform.position)を代入しているのでそのX座標に10に変更している


実行すると移動する。

ゲームオブジェクトを動かしてみる2

Translateで動かすサンプル 行ったり来たりします。
ugoku1.JPG ugoku2.JPG

詳細をみる

説明 追記1

cubu_name.JPG

■void Update に記述することで繰り返し機能する※1



フィールドはそのクラスで使う値をずっと保管しておくのに使われる。
フィールドが無い場合、構文の中で宣言した変数は構文を抜けると消える。メソッドの中で宣言した変数の値も記憶できない そこでフィールドを利用してインスタンスすることで、値を保管しカウンター値をずっと保管できるようにする。
フィールド
int counter = 0;
float plus = 0.1f;


■plus 動かす幅の値 foloat型の値で0.1fとしてあります。

回数を増やす counter++;
■counter 移動(Trancelate)を実行した回数を保管しておくものです。今、何回行ったり(来たり)を記憶するのに用意しました。
※1 Updateに記述することで繰り返し機能することで繰り返しプラスされます。



Vector3インスタンスの作成 Vector3 p = new Vector3(0, 0, plus); z、奥行きの変更のみしている


Trancelateで動かす tranceform.Trancelate(p);
Vector3インスタンスの作成 Vector3 p = new Vector3(0, 0, plus);でpに代入している 
plusは※1によって繰り返し計算され、※2のifで数値を変更される
■TrancelateはTrancefoamクラスのメソッドです。
引数にはVector3に設定されている各値の幅だけそのゲームオブジェクトを移動させます。



※2
100回実行したらplusを書き換える counterで回数をリセットする 
if (counter == 100){
          counter = 0;
           plus *= -1;
       }

Updateによって繰り返しここまで行う

⋆= a *= b 乗算代入演算子  a = a * bということ plus=plus * -1; float型です。

ゲームオブジェクトの位置などについて

■「transform」 位置 向き 大きさ などを扱うプロパティ。
purpatexi.jpg
■クラスの全体
GameObject
 L「Transform」transformプロパティ
  L「Vector3」positionプロパティ

transformプロパティに「Transform」というクラスのインスタンスが入っている、
trs.JPG


xyz.jpg


■Vector3 三次元を扱うときにつかうときのクラス
Vector3 のインスタンスの作り方
Vector 変数 = new Vector3(x値,y値,z値);

■position X横 Y横 Z奥行 は いずれも 実数float値



■Translate 移動の機能をもったメソッド。移動する位置ではなくて、移動する幅なので注意。
GameObjectを動かすメソッド
<<Transform>>.Translate(<<Vector3>>); 




					
  • 最終更新:2016-02-17 13:52:39

このWIKIを編集するにはパスワード入力が必要です

認証パスワード