在玩家面前无限生成游戏对象
Generating GameObject in front of player infinitely
我有一个 'player' 3D 对象和一个 'circle' 3D 对象。玩家已经可以一个一个的向圆圈移动了。
我需要在按下空格键时在玩家面前随机生成圆圈,例如按下空格键然后生成一个圆圈,再次按下空格键然后生成另一个圆圈等等。
与随机生成一样,它需要在现有圆的半径上生成,例如,在前面不在后面(180 度)的任何地方距离圆 2 个单位
所有这些文字可能会使问题看起来很复杂,但我真正需要的是在现有圆圈之前创建另一个圆圈。
如果你可以使用某种随机旋转玩家的方式来在玩家面前生成,这也会很有帮助。
到目前为止,这是我的代码,请随时在答案中完全擦除我的原始代码:
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()
{
}
}
提前致谢!
您可以在最大和最小角度之间围绕您的向上矢量旋转您的播放器,然后使用您的距离和方向找到新位置
对于随机角度部分,您可以使用
生成一个随机数
RandomAngle=Random.Range(MinAngle,MaxAngle);
然后将其与
一起使用
Quaternion.AngleAxis(RandomAngle, playerUpVector)
围绕你的球员向上矢量旋转它,我不知道你用什么作为你的向上矢量但通常它是 Vector3.up
然后乘以你的玩家方向(playerLocalDirection
)通常是 Vector3.forward
Vector3 newPos= myPos + Quaternion.AngleAxis(RandomAngle, playerUpVector) * playerLocalDirection * DistanceFromPlayer;
我需要在按下空格键时在玩家面前随机生成圆圈,例如按下空格键然后生成一个圆圈,再次按下空格键然后生成另一个圆圈等等。
与随机生成一样,它需要在现有圆的半径上生成,例如,在前面不在后面(180 度)的任何地方距离圆 2 个单位
所有这些文字可能会使问题看起来很复杂,但我真正需要的是在现有圆圈之前创建另一个圆圈。
如果你可以使用某种随机旋转玩家的方式来在玩家面前生成,这也会很有帮助。
到目前为止,这是我的代码,请随时在答案中完全擦除我的原始代码:
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()
{
}
}
提前致谢!
您可以在最大和最小角度之间围绕您的向上矢量旋转您的播放器,然后使用您的距离和方向找到新位置
对于随机角度部分,您可以使用
生成一个随机数
RandomAngle=Random.Range(MinAngle,MaxAngle);
然后将其与
一起使用
Quaternion.AngleAxis(RandomAngle, playerUpVector)
围绕你的球员向上矢量旋转它,我不知道你用什么作为你的向上矢量但通常它是 Vector3.up
然后乘以你的玩家方向(playerLocalDirection
)通常是 Vector3.forward
Vector3 newPos= myPos + Quaternion.AngleAxis(RandomAngle, playerUpVector) * playerLocalDirection * DistanceFromPlayer;