【问题标题】:Spawn Enemy GameObject only infornt of the Camera view while camera moves with the Player GameObject仅在相机视图前生成敌人游戏对象,同时相机随玩家游戏对象移动
【发布时间】:2020-09-23 01:55:40
【问题描述】:

我试图在固定的 z 轴和随机的 x 轴点之间生成敌人。我正在让地面成为玩家的孩子,所以它会随着玩家移动。玩家只能在水平轴上移动。我想让它看起来像敌人总是在玩家面前产卵。我怎么能这样做?现在,如果我与玩家一起移动地面,敌人只会在指定点生成。

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

public class SpawnManager : MonoBehaviour
{
[SerializeField] private GameObject _enemy;
// Start is called before the first frame update
void Start()
{
    StartCoroutine(SpawnRoutine());
}

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

}

IEnumerator SpawnRoutine()
{
    while(true)
    {
        Vector3 PosToSpawn = new Vector3(Random.Range(-23.6f, 23.6f),1, 16.6f);
        Instantiate(_enemy, PosToSpawn, Quaternion.identity);
        yield return new WaitForSeconds(1f);
    }
}

}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    新答案

    使用与引用敌人对象相同的方法获取对 Ground 对象的引用。

    [SerializeField]
    private GameObject _ground;
    

    替换:

    Vector3 PosToSpawn = new Vector3(Random.Range(-23.6f, 23.6f),1, 16.6f);
    

    与:

    Vector3 PosToSpawn = new Vector3(Random.Range(_ground.transform.position.x - 23.6f, _ground.transform.position.x + 23.6f), 1, 16.6f);
    

    只要您按照您所说的那样更新地面对象相对于玩家对象的位置,这将起作用。

    旧答案(更改示例脚本后更改):

    如果我正确理解您的问题/问题,即使您使用 Random.Range 设置它们的 x 值,每次运行游戏时,您的敌人都会在相同的地方生成。

    如果这是您的实际问题,那是因为您的游戏总是使用相同的种子来生成随机数。

    您可以在每次启动游戏时使用任意值(例如 System.DateTime.Now.Ticks)生成一个新的随机种子。将以下代码放入您的 Start 方法(不是您的 Update 方法):

    int seed = (int) System.DateTime.Now.Ticks;
    Random.InitState(seed);
    

    上述代码的作用是,获取当前系统时间刻度(每次运行游戏时都会改变),然后使用该值作为种子初始化随机数生成器。这应该会导致您每次运行游戏时产生不同的生成位置。

    更多信息请看:

    【讨论】:

    • 嘿,对不起,这不是我要找的。无论我移动到哪里,我都试图在我的摄像机角度内产生敌人,而上面的脚本只是敌人的脚本。我有不同的生成和玩家移动脚本。
    • @kunalsingh 不用担心。我对您发布敌人脚本而不是生成脚本这一事实感到困惑,所以我认为您的问题与您更新敌人位置的行有关。要回答您的问题,我们需要了解您当前如何确定敌人的生成位置。如果没有这些信息,我只能说你必须使用相机截头体平面:docs.unity3d.com/ScriptReference/…
    • 我把 Enemy 脚本改成了上面的 SpawnManager 脚本。请看一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多