我正在使用这个教程noobtuts来制作蛇形游戏。一切都运行正常但一个问题是如何检测到头部与它的尾部发生碰撞。 头部已经与头部后面的尾部碰撞。它不断地与头部碰撞并打印木头。但是当头部移动时头部与尾部碰撞时我想要。 这是我的代码
if (coll.name.StartsWith ("TailPrefab"))
{
print ("tail colliding");
}
答案 0 :(得分:1)
你几乎就在那里,你需要在头部和尾部附加一个单独的脚本,或者为每个人添加一个脚本,根据一些变量知道它是头还是尾。为简单起见,我将演示头部脚本: 将一个对撞机安装在头部并给它一个tag称为“头部”。将尾部的对撞机标记为“尾巴”。在head脚本中创建一个碰撞程序:
void OnCollisonEnter(Collider col)
{
if(col.tag == "tail")
{
//do what you want to do
}
}
澄清:你需要一个单独的头部,尾部和身体的游戏对象。
答案 1 :(得分:1)
你的脑袋似乎谨慎地移动,也就是它从当前跳到下一个。
然后你可以检查目标位置是否已有东西。
SnakeNode[]nodes;
foreach(SnakeNode node in nodes)
{
if(Vector3.Distance(head.position, node.position) < 0.01f){ CollisionDetected(); }
}
这是一个伪代码,它认为你有某种包含当前位置的SnakeNode系统。然后你迭代确保头部不是集合的一部分(或者你会发生碰撞)。