【发布时间】:2018-07-15 06:34:33
【问题描述】:
我正在使用 Unity 和 C#。
在我的游戏中,敌人被反复实例化并以直线路径向玩家移动。我想让敌人在特定时间过去后以正弦波移动,以使游戏更加艰难。
运动会立即改变,但我希望改变从新(下一个)敌人的实例化开始生效,而不是当前存在的敌人。
我能做什么?
EnemySpawner 脚本 -
private void Start()
{
timeelapsed = 0f;
StartCoroutine(SpawnEnemies(delay));
}
private void Update()
{
timeelapsed += Time.deltaTime;
}
private IEnumerator SpawnEnemies(float delay)
{
while (true)
{
SpawnNewEnemy();
yield return new WaitForSeconds(delay);
}
}
private void SpawnNewEnemy()
{
if (!enemyclone)
{
enemyclone = Instantiate(enemy, enemySpawner.transform.position + offset, Quaternion.identity);
}
}
Enemy Movement脚本:
private void Update()
{
t = Time.time;
if (EnemySpawner.timeelapsed > 0f && EnemySpawner.timeelapsed <= 20f)
{
enemy.transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
if (EnemySpawner.timeelapsed > 20f && EnemySpawner.timeelapsed <= 40f)
{
enemy.GetComponent<Rigidbody>().velocity = Vector3.forward * 5 + Vector3.left * 3 * Mathf.Sin(10f * t);
}
}
【问题讨论】:
-
考虑分配移动能力,例如A* path finding in unity 或 the original guide.
标签: c# unity3d instantiation game-development gameobject