2017-01-09 3 views
0

enter image description here私は、「プレイヤー」3Dオブジェクトと「サークル」3Dオブジェクトを持っています。プレイヤーはすでに1つずつサークルの方に移動できます。無限にプレイヤーの前にゲームオブジェクトを生成

スペースバーを押すと、スペースバーが押された後に1つの円が生成され、スペースバーがもう一度押されてから別の円が生成されるなど、プレーヤの前に無作為に生成する円が必要です。

ランダムに生成されたと同じように、それはどこか前に2個の単位離れ円から例えば、既存の円の半径に産卵する必要が背後(180度)ではないこと

すべてこのテキストは、質問をすることができます複雑に見えますが、私が本当に必要とするのは、既存のものの前に別の円ができていることです。

また、プレーヤーの前で生成するために、プレーヤーのランダムな回転を使用すると便利です。

これはこれまでのところ、完全な答えで私の元のコードを拭い気軽に私のコードです:事前に

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class CreateObject : MonoBehaviour 
{ 

    public Vector3 playerPos; 
    public GameObject yourObject; 

    // Use this for initialization 
    void Start() 
    { 
     playerPos = playerPos.transform.position; 
     Instantiate(yourObject, new Vector3(playerPos.transform.position.x + 5, playerPos.transform.position.y, playerPos.transform.position.z), Quaternion.identity); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
    } 
} 

ありがとう!

+0

Errrのコードでは、playerPosの前に正確に1つのオブジェクトしかインスタンス化しません。実際にあなたが探しているコード/リサーチコードを記述しようとしましたか? – Alox

+1

次のリンクを参考にしてください。 https://docs.unity3d.com/ScriptReference/Random.Range.html https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html – Alox

+0

何か質問の読者がダイアグラムであり、あなたが何をしたいのかを説明するのに役立つかもしれません。あなたが正しいので、あなたの質問の文言は、新しいサークルをどのように配置するかをすぐにはっきりさせるものではありません。 – Serlite

答えて

1

あなたは、あなたが、その後
RandomAngle=Random.Range(MinAngle,MaxAngle);
で乱数を生成することができ、ランダムな角度部分のための新しい位置
を見つけるためにあなたの距離と方向を使用して、あなたの最大と最小角度の間、あなたの最大のベクトルの周りにあなたのプレーヤーを回転させることができますお使いのプレイヤーの周りUpvectorそれを回転させるように
Quaternion.AngleAxis(RandomAngle, playerUpVector)
でそれを使用し、その後、あなたのプレイヤーの方向(playerLocalDirection)は、通常、そのことによってそれを掛け、私はあなたのアップベクトルのために使用したものを知らないが、通常、それはVector3.up
ですVector3.forward

Vector3 newPos= myPos + Quaternion.AngleAxis(RandomAngle, playerUpVector) * playerLocalDirection * DistanceFromPlayer; 
+0

それは本当に便利です、ありがとう! – Nil

+0

しかし、敵は何であると思われますか? – Nil

+0

新しいオブジェクトをインスタンス化するために使用すべき位置です。必要な名前を付けてください –

関連する問題