2013年9月24日火曜日

【Unity】他のゲームオブジェクトのScript内のメソッドを実行する方法

設計とかする様になって、「このスクリプトはこのオブジェクトにやらせたほうがいいよなー」とか、
「このメソッドはこのスクリプトに実装するべきだよなー」とか、保守や修正等を考えると
各オブジェクトで役割をキッチリ分けておくべきです。

そんな時に出てくる問題としてスクリプトのメソッドがあるかと思います。

例えば、『Aボタンを押したらプレイヤーがジャンプする』
イメージとしては下記な感じが理想かと。。。







ここでは「コントローラー」側で「プレイヤー」のメソッドを呼ぶ方法を紹介します。

まず、「プレイヤー」側のメソッドを他のスクリプトからも呼べる様にするために
メソッドに[public]を付けます。
↓こんな感じ
//////////////////////////////////////////////////////// ※プレイヤースクリプト内
//ジャンプ実行;
 public void Jump()
 {
           //プレイヤーをジャンプさせる
}
////////////////////////////////////////////////////////

次に、「コントローラー」側から「プレイヤー」のメソッドを呼びます。
まずは宣言
////////////////////////////////////////////////////////※コントローラースクリプト内
GameObject Player_Obj;
////////////////////////////////////////////////////////

次に「プレイヤー」オブジェクトを取得します。※赤文字箇所はオブジェクト名で指定
////////////////////////////////////////////////////////※コントローラースクリプト内
void Start ()
 {
      Player_Obj = GameObject.Find("Player");
 }
////////////////////////////////////////////////////////

取得したオブジェクトのメソッドを実行します。
※<>内はスクリプト名を指定し、最後の赤文字はメソッド名を指定する
////////////////////////////////////////////////////////※コントローラースクリプト内
void Update ()
 {
      //マウスクリック;
      if(Input.GetMouseButtonDown (0))
      {
          //ジャンプ実行;
          Player_Obj.GetComponent<Player_Control>().Jump();
      }
 }
////////////////////////////////////////////////////////

これで他のゲームオブジェクトのScript内のメソッドを実行することができます。

2013年9月11日水曜日

【Unity】ゲームオブジェクトの基本[Mesh]

開発進めてくうちに、やっぱ基本からしっかり勉強しておいた方がいいなと思って初歩の初歩からおさえていこうと思います!!

で、今日はゲームオブジェクトの基本である『Mesh Filter』と『Mesh Renderer』について改めて勉強しましたであります。

簡単に2つを説明すると・・・
Mesh Filter:3Dモデルの頂点情報
Mesh Renderer:メッシュ情報を描画するもの

要は・・・Filterの方が設計図でRendererがそれを実体化するってことね(・∀・)

ものは試しだってことで、空のオブジェクトからCUBEのオブジェクトを自分で作ってみた。

①空のオブジェクトを追加


 この時点でHierarchyにGameObjectが追加されるだけでSceneには何も表示されません。。。
InspectorにはTransform(位置・傾き・サイズ情報)があるだけ。

ここで登場するのがMeshです。

②Mesh Filterを追加
 AddComponentからMeshFilterを選択
InspectorにMeshFilterが追加されました!


でもMeshがNoneのままなのでCUBEをセットしてあげます。






はい、Sceneには何も表示されませんw
設計図だけあっても実体化するRendererがまだ居ないのでそうなりますよね

③Mesh Rendererを追加
 AddComponentからMeshRendererを選択
InspectorにMeshRenderer追加されました!

CUBEが実体化されました!!




でもピンクくていつもと違う。。。(´・ω・`)
 Materialsに何もアサインされてなかったからでした。
とりあえずデフォルトのマテリアルをアサインして・・・



見覚えのある形になりましたね(・∀・)








予めUnityに用意されているMeshFilterは基本の形しかありません。。。
マヤやBlenderが使える様になると他の形のMeshを作ることもできるみたいです!!
キャラクターのMeshやモンスターのMeshとかとかとか・・・想像が膨らみますねwww
 

2013年9月4日水曜日

【Unity】重力を操る!!

ちょっと中二的なタイトルですみません。。。
今回は重力値の変更方法について書いとこうかと。

様々なゲームでたまにある重力異常地帯なんか作ったりも、これを使えば出来ちゃいます。

まずは・・・
無重力!!




はい。これだけです(・∀・)Unityさん流石!!
宇宙空間なんかの再現もこれで可能です。


お次は・・・
重力反転!!




はい。これまた一行です(^_^;)


そして最後は・・・
重力自在!!www


Vector3オブジェクトで好きな方向に重力を向けられます。

ちなみに
Physics.gravityの初期値は自然界とほぼ同じ(0.0, -9.8, 0.0)になっているようです。

ちなみにちなみに
メニューから「Edit」→「Project Settings」→「Physics」で開かれる「PhysicsManager」でも変更可能。
スクリプトでの変更が必要ない場合はココだけの変更でOKです。







2013年9月3日火曜日

【Unity】日本語コメントを書くときの注意点



Unityで日本語のコメントを書き込む時にの注意点
始めたばっかりの方やコメントはガリガリ書く人にはハマるかもです。私もハマりました(泣)

セミコロンを付けないと次の行が無効になる!!

下記のコメントの書き方だとビルドは通るのに 次の行が処理上無視されてしまう。。。






回避する方法としては下記の用にコメントの最後に半角セミコロンを付けてあげると
正常に処理されるようになった。





コメントもソースのうちってことですよねUnityさん(・∀・)