2016-05-06 16 views
0

特定の座標(x、y、z)でスクリプトを使用してオブジェクトをインスタンス化した後、特定の座標(x、y、z)で回転します。 ここに私のコードですが、それはあなたがあなたの火災フィールドにインスタンス化の戻り値を格納する必要がありますインスタンス化オブジェクトのスクリプトを使用してオブジェクトを回転する

using UnityEngine; 
using System.Collections; 
public class Generator : MonoBehaviour { 
public GameObject fire; 
//public GameObject firetaps; 
//System.Random randomize = new System.Random(); 
// Use this for initialization 
void Start() { 
    //int fun=randomize.Next(1,6); 
    switch (1) { 
    case 1: 
     PlaceFire(); 
     break; 
    /*case 2: 
     PlaceFire1(); 
     break; 
    case 3: 
     PlaceFire2(); 
     break;*/ 
     } 
    } 
    void PlaceFire() 
    { 
    Instantiate(fire, GeneratedPosition(), Quaternion.identity); 
fire.transform.eulerAngles = new Vector3   (275.0941f,287.0612f,72.63131f);// it does not rotate :-(
    //fire.transform.Rotate(275.0941f,287.0612f,72.63131f); 
} 
Vector3 GeneratedPosition() 
{ 
    float x,y,z; 
    x = -142.5f; 
    y = 39.165f; 
    z =9.9817f; 
    return new Vector3(x,y,z); 
} 

答えて

2

を回転しません。インスタンス化されたゲームオブジェクトを回転させたことはありません。 (も!!編集を読んで)

Instantiate(fire, GeneratedPosition(), Quaternion.identity); 
fire.transform.eulerAngles = new Vector3(275.0941f,287.0612f,72.63131f); 

ことも、あなたの魔法の値が奇数の

fire = Instantiate(fire, GeneratedPosition(), Quaternion.identity) as GameObject; 
fire.transform.eulerAngles = new Vector3(275.0941f,287.0612f,72.63131f); 

でなければなりません。

編集 火はあなたのプレハブです。したがって、代わりにローカル変数を使用することができます。

GameObject fireInstance = Instantiate(fire, GeneratedPosition(), Quaternion.identity) as GameObject; 
fireInstance.transform.eulerAngles = new Vector3(275.0941f,287.0612f,72.63131f); 

またインスタンス化のこのオーバーロードの第三引数は、すでに回転を取り、なぜすぐそこにそれを渡していませんか?

Instantiate(fire, GeneratedPosition(), Qaternion.Euler(275.0941f,287.0612f,72.63131f)); 

Idkまだ参照が必要な場合は、依存してください。しかし、あなたが望むタイプにキャストする必要があるオブジェクトだけを返すことに注意してください。

+0

ありがとうございました:-) –

+0

それは私のために働いた。 –

+0

非常に詳しい回答です。 – Programmer

関連する問題