我有一个'播放器'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()
{
}
}
提前致谢!
答案 0 :(得分:1)
您可以在最大和最小角度之间围绕向上矢量旋转播放器,然后使用距离和方向查找新位置
对于随机角度部分,您可以生成随机数
RandomAngle=Random.Range(MinAngle,MaxAngle);
然后用它与
Quaternion.AngleAxis(RandomAngle, playerUpVector)
围绕你的玩家向上旋转Upvector,我不知道你用于向上矢量的是什么,但通常它是Vector3.up
然后乘以你的球员方向(playerLocalDirection
),通常是Vector3.forward
Vector3 newPos= myPos + Quaternion.AngleAxis(RandomAngle, playerUpVector) * playerLocalDirection * DistanceFromPlayer;