我正在製作一個標題,玩家可以在其當前位置放置炸彈。問題是,我懷疑,玩家不能穿過任何放置的炸彈(除非他拿起一個特定物品)。Unity3D碰撞需求
但是,一個非觸發對撞機的原因是,放置炸彈推開玩家(也許是在他最終卡住的牆上),這似乎不是方式。
那麼是否有任何簡單的方法來實現與炸彈的碰撞,這會阻止基於腳本的玩家移動,或者我是否必須檢查玩家所採取的每一步,如果他會與炸彈相撞並停止移動?
更新(回答程序員評論)
如果炸彈撞機並不意味着作爲觸發,這將導致汽車碰撞行爲,誰丟棄炸彈作爲他的當前位置的球員,推在任何方向,這是事件不是希望的行爲,因爲玩家也可以推到牆上,他不能出去。
更新
炸彈撞機最初設置爲觸發和所連接的腳本看起來像這樣(由吉榮。德克拉克答案後):
public class Bomb : MonoBehaviour
{
private SphereCollider collider;
// Use this for initialization
void Start()
{
collider = GetComponent<SphereCollider>();
}
// Update is called once per frame
void Update()
{
Collider[] collidings = Physics.OverlapSphere(gameObject.transform.position, 1);
if (!collidings.Any(s => s.tag.Equals("Player")))
collider.isTrigger = false;
}
}
,如果該玩家收集的物品,其允許他通過炸彈行走,他自己的圖層將更改爲指定的玩家圖層,而不會與炸彈相撞!
假設你可以使用圖層與哪個圖層進行交互,你可以在Unity Docs中閱讀更多[here](https://docs.unity3d.com/Manual/LayerBasedCollision.html)。 – Thalthanas
*「但是,一個非觸發對撞機的原因,放置炸彈將玩家推開(也許是在他最終卡住的牆上),這似乎不是方式。」*請解釋你的意思。你需要非觸發對撞機來防止碰撞,否則你將不得不寫一些瘋狂的代碼。 – Programmer
@EmreE:感謝您的鏈接,但圖層似乎不是正確的方式,因爲基本上我希望玩家碰到炸彈,但不是當他們放置它們時 –