2016-08-11 2 views
0

移動、拡大縮小、回転後にTag(Model)付きの6つのGameObjectがあります。ボタンをクリックすると、どのように開始位置に戻すことができますか?Unity:Gameobjects with tag、開始位置/位置にリセット

私はVuforiaとUnityを使用しています。

ありがとうございます、ありがとうございます。

+2

質問に対して申し訳ありませんが、あなたも試してくださいましたか?移動する前に位置、縮尺、回転を保存してから、クリックするだけでこれらの値にリセットしてください。 – TheDjentleman

+0

私はUnity初心者ですが、いくつかの方法を試しましたが、私は間違いを続けていました。あなたが今提案したことを試してみます。ありがとう。 – Zinox

+0

**いくつかの方法を試してみました。**正確に何を試したかについて世界に伝えることができますか? –

答えて

1

私はタグで約6ゲームオブジェクト(モデル)

はそれらすべてを検索し、配列にそれらを格納できます。

GameObject[] models = GameObject.FindGameObjectsWithTag("Model"); 

移動、スケール、私はボタンをクリックします たときに場所を開始するために戻ってそれらをリセットすることができ回しか。

forループと、Start()関数の位置(Vector3)、スケール(Vector3)及び回転(Quaternion)を取得し、一時的な変数にその値を格納します。 Buttonをクリックすると、モデルの位置、位取り、回転をこれらの値に設定する関数を呼び出します。

ボタンのクリックで関数を呼び出すには、エディタまたはスクリプトから関数を呼び出すことができます。 ButtonInstance.onClick.AddListener(() => yourFunctionToCall());

私はここに複雑ユニティ初心者

何もしていません。

GameObject.FindGameObjectsWithTag

C# arrays

GetComponent

Vector3

Quaternion

Unity Tutorials for beginners

Vector3[] defaultPos; 
Vector3[] defaultScale; 
Quaternion[] defaultRot; 

Transform[] models; 

//Attach Button from the Editor 
public Button resetButton; 

void Start() 
{ 
    //Call to back up the Transform before moving, scaling or rotating the GameObject 
    backUpTransform(); 
} 

void backUpTransform() 
{ 
    //Find GameObjects with Model tag 
    GameObject[] tempModels = GameObject.FindGameObjectsWithTag("Model"); 

    //Create pos, scale and rot, Transform array size based on sixe of Objects found 
    defaultPos = new Vector3[tempModels.Length]; 
    defaultScale = new Vector3[tempModels.Length]; 
    defaultRot = new Quaternion[tempModels.Length]; 

    models = new Transform[tempModels.Length]; 

    //Get original the pos, scale and rot of each Object on the transform 
    for (int i = 0; i < tempModels.Length; i++) 
    { 
     models[i] = tempModels[i].GetComponent<Transform>(); 

     defaultPos[i] = models[i].position; 
     defaultScale[i] = models[i].localScale; 
     defaultRot[i] = models[i].rotation; 
    } 
} 

//Called when Button is clicked 
void resetTransform() 
{ 
    //Restore the all the original pos, scale and rot of each GameOBject 
    for (int i = 0; i < models.Length; i++) 
    { 
     models[i].position = defaultPos[i]; 
     models[i].localScale = defaultScale[i]; 
     models[i].rotation = defaultRot[i]; 
    } 
} 


void OnEnable() 
{ 
    //Register Button Events 
    resetButton.onClick.AddListener(() => resetTransform()); 

} 


void OnDisable() 
{ 
    //Un-Register Button Events 
    resetButton.onClick.RemoveAllListeners(); 
} 
+1

ありがとうございます。今すぐ試してみてください – Zinox

+0

素晴らしい作品です。また、非常に便利なリンクやコメント付きのコードにも感謝しています。私はあなたの助けを借りてそれをさらに探求します。 :) – Zinox

関連する問題