2017-03-09 4 views
0

私は、バーストをクリックするとPinata GameObjectを作成しようとしています。さまざまなイメージと動作のギフトゲームオブジェクトの可変数を与えています。アクション時のスプライトのスプライト

私はまた、このユニティ・ボキャブラリーがユニテイ・ドックでこれを調べるためにどのようなものなのかよくわかりません。

誰でも私に手を貸してくれますか?ありがとう!

答えて

1

これにはいくつかの方法があります。 簡単な方法は、Object.Instantiateを使用することです。オブジェクトインスタンシエーションは、後で行うボキャブです。 これは、あらかじめ定義されたUnityオブジェクトのコピーを作成します。これは、gameObjectオブジェクトまたはUnityEngine.Objectから派生した他のオブジェクトです。詳細はhttps://docs.unity3d.com/ScriptReference/Object.Instantiate.htmlを確認してください。

あなたのケースでは、あなたのPinataには、プレハブの配列またはリストがあります。これらのプレハブは、それぞれが特定の動作とスプライトで作成します。 Pinataが破裂すると、Pinataを囲むランダムな位置でランダムなプレハブをインスタンス化します。これらの線に沿って

何かがトリックを行う必要があります:あなたはゲームが矛盾しないようにしたい場合は、心の中で

class Pinata : Monobehaviour 
{ 
    public GameObject[] pickupPrefabs;   

    public int numberOfItemsToSpawn;  //This can be random  

    //any other variables that influence spawning 

    //Other methods 

    public void Burst() 
    { 
     for(int i = 0; i < numberOfItemsToSpawn; i++) 
     { 
      //Length - 1 because the range is inclusive, may return 
      //the length of the array otherwise, and throw exceptions 

      int randomItem = Random.Range(0, pickupPrefabs.Length - 1); 

      GameObject pickup = (GameObject)Instantiate(pickupPrefabs[randomItem]); 

      pickup.transform.position = transform.position; 

      //the position can be randomised, you can also do other cool effects like apply an explosive force or something 


     } 
    } 
} 

ベアを、あらかじめ定義されたスプライトが所有し、各行動のプレハブが持っているだろう、これはランダム化されないであろう。無作為化された唯一のものは産卵と位置づけです。あなたが行動のためのスプライトをランダム化したかったのなら、あなたはピニャータクラスにこれを追加する必要があるだろう

 public class Pinata : Monobehaviour 
     { 
      //An array of all possible sprites 
      public Sprite[] objectSprites; 

      public void Burst() 
      { 
       //the stuff I mentioned earlier 

      int randomSprite = Random.Range(0, objectSprites.Length - 1); 

      SpriteRenderer renderer = pickup.GetComponent<SpriteRenderer>(); 
      //Set the sprite of the renderer to a random one 
      renderer.sprite = objectSprites[randomSprite]; 

      float flip = Random.value; 

      //not essential, but can make it more random 
      if(flip > 0.5) 
      { 
        renderer.flipX = true; 
      } 
      } 
     } 

あなたは、すべてあなたのランダムなニーズにhttps://docs.unity3d.com/ScriptReference/Random.html

をユニティランダムを使用することができます

うまくいけば、これは正しい方向にあなたを導きます。

+0

超クールです。ありがとう! –

関連する問題