无限制地在玩家面前生成GameObject

时间:2017-01-09 19:41:16

标签: c# unity3d unity5

enter image description here我有一个'播放器'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 个答案:

答案 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;