如何在蛇游戏统一中与尾巴相撞

时间:2016-11-06 16:27:07

标签: unity3d

我正在使用这个教程noobtuts来制作蛇形游戏。一切都运行正常但一个问题是如何检测到头部与它的尾部发生碰撞。 头部已经与头部后面的尾部碰撞。它不断地与头部碰撞并打印木头。但是当头部移动时头部与尾部碰撞时我想要。 这是我的代码

if (coll.name.StartsWith ("TailPrefab"))
        {
                print ("tail colliding");
        }

2 个答案:

答案 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系统。然后你迭代确保头部不是集合的一部分(或者你会发生碰撞)。