重新制作 Snake 游戏。蛇的头是触发器,而苹果只使用对撞机。现在OnTriggerEnter()每次都不起作用 - 蛇的触发器必须多次进入苹果体内才能得到它。
有用于进食的代码:
void Head.OnTriggerEnter(Collider col)
{
if(col.CompareTag("Food"))
{
gameController.FoodEated();
}
}
public void GameController FoodEated()
{
Destroy(currentFood);
InitializeMeal();
head.GrowUp();
}
void GameController.InitializeMeal()
{
currentFood = (GameObject)Instantiate(foodPrefab, FindFreeSpace(), Quaternion.identity);
}
还有一种魔力:第一个苹果可以正常食用,但是在苹果被激活之前,蛇可以穿过第二个苹果几次。
我尝试了每个触发器功能,但它们都没有工作。 http://www.youtube.com/watch?v=z_UQi7SGOLw - 错误视频。蛇正在通过苹果进行3-4帧更新。我有另一个实现苹果的想法,但我认为触发更合适。
答案 0 :(得分:0)
如果你的蛇移动得太快而且苹果对撞机太小,我猜Unity的发动机有时会错过碰撞。
如果在蛇上你有一个刚体组件,你可以通过将“碰撞检测”从“离散”更改为“继续”或“继续动态”来提高碰撞检测质量。
答案 1 :(得分:0)
正如您在上面的视频中看到的那样,我的蛇正在通过在当前transform.position
创建一个tailelement来增长。当最后两个尾部元素之间的距离大于或等于1时,TailElement开始移动。
我只是试图将头部对撞机的半径减小10%,现在尾部元素在蛇的运动过程中不会碰撞。现在它工作正常。