Генерация GameObject перед игроком бесконечно
У меня есть 3D-объект "игрок" и 3D-объект "круг". Игрок уже может двигаться по кругу один за другим.
Мне нужно, чтобы круги генерировались случайным образом перед игроком, когда нажимается пробел, например, пробел нажимается, затем генерируется один кружок, пробел нажимается снова, затем генерируется другой кружок и так далее.
Как и в случае сгенерированных случайным образом, он должен появляться на радиусе существующего круга, например, в 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()
{
}
}
Заранее спасибо!
1 ответ
Вы можете вращать игрока вокруг вашего Up Vector между вашим максимальным и минимальным углом, а затем использовать ваше расстояние и направление, чтобы найти новую позицию
для части случайного угла вы можете сгенерировать случайное число сRandomAngle=Random.Range(MinAngle,MaxAngle);
затем используйте его с Quaternion.AngleAxis(RandomAngle, playerUpVector)
чтобы вращать его вокруг ваших игроков Upvector, я не знаю, что вы использовали для своего вектора Up, но обычно это Vector3.up
затем умножьте это на направление ваших игроков (playerLocalDirection
) то, что обычно Vector3.forward
Vector3 newPos= myPos + Quaternion.AngleAxis(RandomAngle, playerUpVector) * playerLocalDirection * DistanceFromPlayer;