我想开发一个2D游戏,我的敌人将弹出并消失在随机位置,彼此没有重叠。我在YouTube上跟随本教程https://www.youtube.com/watch?v=iLTP4EbM1N4,但是当我的玩家触及一个敌人时,他将失去2条生命而不是1条。我想这是因为敌人会在同一个生成点随机产生(我有5个敌人)。你有什么建议如何解决这个问题?任何帮助将不胜感激。提前致谢。这里是我的两个脚本:团结:在C中随机位置重叠随机对象随机对象#
SpawnItems.cs
using UnityEngine;
using System.Collections;
public class SpawnItems : MonoBehaviour
{
public Transform[] SpawnPoints;
public float spawnTime = .5f;
public GameObject[] Coins;
void Start()
{
InvokeRepeating ("SpawnCoins", spawnTime, spawnTime);
}
void Update()
{
}
void SpawnCoins()
{
for (int i = 0; i < Coins.Length; i++) {
int spawnIndex = Random.Range (0, SpawnPoints.Length);
//int objectIndex = Random.Range (0, Coins.Length);
Instantiate (Coins [i], SpawnPoints [spawnIndex].position, SpawnPoints [spawnIndex].rotation);
}
}
Destroy.cs
using UnityEngine;
using System.Collections;
public class DestoryScript: MonoBehaviour
{
public float destoryTime = .5f;
private float rotateSpeed = 300.0f;
void Start()
{
Destroy (gameObject, destoryTime);
}
void Update()
{
transform.Rotate (Vector3.forward * Time.deltaTime * rotateSpeed);
}
}
Orange ball overlaps with green ball
你能否证实敌人正在那时产卵?你的'Destroy'方法需要0.5秒才能移除物体,所以在这个时间范围内可能发生两次碰撞? – keyboardP
嗨@keyboardP是的,我的敌人正在那个时候产卵,每个敌人都要花费0.5秒的时间才能移除。但同时,两个敌人在同一点上重叠。仅供参考:我的播放器还有另一个脚本。 – Afrin
选择一个随机位置“possibleNewSpawnPoint”。然后仔细检查该点是否靠近任何现有的敌人。如果它靠近现有的敌人,则选择另一个随机的“possibleNewSpawnPoint”。继续这样做,直到你得到一个不太接近的东西。这是游戏工程中的绝对基本模式。 – Fattie