【问题标题】:Disabling enemy, getting a random number, teleport to that number as a coordinate, enabling the enemy禁用敌人,获取随机数,传送到该数字作为坐标,启用敌人
【发布时间】:2021-03-01 15:03:14
【问题描述】:

我一直在尝试创建一个波浪游戏,让敌人在我杀死它们后不断重新生成。我创造了敌人和一把枪来杀死他们。目前,我只是在检测到与子弹碰撞时禁用敌人对象。问题来了。

我想得到一个随机数,然后将敌人传送到那个坐标。然后重新启用敌人,使其看起来像是不断重新生成。我怎么做?有更好的解决方案吗?我正在使用 c#。

我也是编程初学者。

代码如下:

private void OnTriggerEnter(Collider Bullet)
{
    isEnemyDead = true;

    currentKillCount = currentKillCount + 1;

    

    if (isEnemyDead == true)
    {
        gameObject.SetActive(false);

        Debug.Log("you have killed an enemy!");

        killCount.text = currentKillCount.ToString();
    }

    if(isEnemyDead == false)
    {
        gameObject.SetActive(true);
    }

    isEnemyDead = false;
}

在这里,我在检测到与子弹碰撞后禁用对象“敌人”。然后我想得到一个随机数,然后将游戏对象传送到该位置,然后再次启用游戏对象,使其看起来像是不断重新生成。这就是我想做的。

【问题讨论】:

  • 哦,好吧,我还没有真正尝试过任何特别的东西。我试图在谷歌上搜索它并找到了一些答案,但没有一个有效。你想要代码的哪一部分?你怎么在这里发图片?

标签: c# unity3d random


【解决方案1】:

gameObject.SetActive 停用对象的所有组件,它不会删除对象本身。而是使用Object.Destroy 将其完全删除。

我建议你先用Public GameObject EnemyPrefab引用你想要放置的敌人的预制件

那么 Instantiate(EnemyPrefab, new Vector3(0, 0, 0); 放置它

Vector3 的坐标可以通过创建Random.Next(0, 0) 的三个实例来随机化,每个坐标一个。这两个字段是可以生成的数字范围,你可以自己决定。

祝你好运!

【讨论】:

  • 谢谢!我会尝试!试过了就更新了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多