c# - 如何随机生成敌人?

标签 c# unity3d

我正在使用 EnemyScript 将敌人移向玩家并杀死玩家,但我无法在代码中随机生成它。我目前通过将预制件放在场景中直接通过屏幕生成它。

这是我的 EnemyScript

using UnityEngine;
using System.Collections;

public class EnemyScript : MonoBehaviour {

public Transform target;
public float speed = 2f;

void Update ()
{
    transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
}


void OnTriggerEnter2D(Collider2D otherCollider)
{
    PlayerControl shot = otherCollider.gameObject.GetComponent<PlayerControl>();
    if (shot != null)
    {
        Destroy(shot.gameObject); 
    }
}

}

最佳答案

你可以使用类似这样的东西:

public GameObject myObj;

void Start () 
{
    enemy = GameObject.Find("enemy");
    InvokeRepeating("SpawnEnemy", 1.6F, 1F);                
}

public void SpawnEnemy() 
{       

    Vector3 position = new Vector3(Random.Range(35.0F, 40.0F), Random.Range(-4F, 2F), 0);       
    Instantiate(myObj, position, Quaternion.identity);

}

在 InvokeRepeating 调用中,您也可以在那里添加随机范围,而不是定时实例化。这个例子只是我刚才做的一些原型(prototype)代码的片段,它可能不能直接满足您的需求,但希望能让您大致了解该怎么做。

编辑:为了有意义,将其放入场景中某处的空白对象中,不要将其附加到实际的敌人身上。

关于c# - 如何随机生成敌人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27187555/

相关文章:

c# - ASP.NET 和 Java Servlets/JSP 之间的技术差异

c# - 找不到类型或命名空间名称 'NUnit' |统一

c# - 当一个变量被一个脚本而不是另一个脚本激活时 If 语句起作用

java - Android 启动时崩溃 - MediaButtonReceiver 可能不为空

c# - 为 RestSharp 客户端维护单个实例

c# - 带有可以转售的 API 的 VOIP 服务?

c# - Parallel.ForEach 对于 DataTable 来说工作太慢

c# - SnapsToDevicePixels 不适用于图像?

wcf - 使用 Unity 找不到命名空间 "ServiceModel"

c# - 来自编辑器脚本的 Gizmo