我正在使用本教程noobtuts來製作蛇遊戲unity.everything工作正常,但一個問題是我如何檢測頭與它的尾巴相撞。 頭部已經與頭部後面的尾巴發生碰撞,它不斷地與頭部碰撞並打印日誌。但是當頭部移動時頭部與尾部碰撞時,我會想要。 這裏是我的代碼如何在蛇遊戲統一中與尾部碰撞
if (coll.name.StartsWith ("TailPrefab"))
{
print ("tail colliding");
}
我正在使用本教程noobtuts來製作蛇遊戲unity.everything工作正常,但一個問題是我如何檢測頭與它的尾巴相撞。 頭部已經與頭部後面的尾巴發生碰撞,它不斷地與頭部碰撞並打印日誌。但是當頭部移動時頭部與尾部碰撞時,我會想要。 這裏是我的代碼如何在蛇遊戲統一中與尾部碰撞
if (coll.name.StartsWith ("TailPrefab"))
{
print ("tail colliding");
}
就快,你要麼需要一個單獨的腳本附加到頭部和尾部或添加一個腳本每一個知道它是否是取決於一些變數頭或尾。爲了簡單起見,我將演示頭文字: 將一個對撞機附加到頭上,並給它一個名爲'head'的tag。尾巴上的對撞機標記'尾巴'。在頭文件中創建一個碰撞編:
void OnCollisonEnter(Collider col)
{
if(col.tag == "tail")
{
//do what you want to do
}
}
澄清:你將需要一個單獨的遊戲對象的頭部,尾部和身體。
你的頭似乎謹慎地移動,就是從當前跳轉到下一個。
然後你可以檢查目標位置是否已經有東西。
SnakeNode[]nodes;
foreach(SnakeNode node in nodes)
{
if(Vector3.Distance(head.position, node.position) < 0.01f){ CollisionDetected(); }
}
這是一個僞代碼,它認爲你有某種包含當前位置的SnakeNode系統。然後你重複確定頭部不是集合的一部分(否則你會碰撞)。
我解決它只使用框對撞機1 px之間的差距。 – shakac
在距離脖子有一段距離的地方放一個額外的煤礦頭。對新的煤礦進行上述檢查。或者你可以使它成爲一個觸發器 –