c# - 将特定对象移动通过另一个特定对象,同时两者都有碰撞器
问题描述
我有一个对象Enemy
和另一个对象Wall
敌人有一个CapsuleCollider
,墙有一个BoxCollider
墙会阻止玩家穿过它。但我希望敌人可以穿过墙壁。
我尝试的是设置一个array
我希望敌人通过的所有墙壁,而不是忽略敌人物体上的碰撞:
for (var i = 0; i < wand.Length; i++)
{
Physics.IgnoreCollision(wand[i].GetComponent<Collider>(), GetComponent<Collider>());
}
但是当他们试图穿过它时,他们仍然被墙挡住了。
我不能将敌人的对撞机设置为触发,因为我需要碰撞来防止它们穿过其他物体。
我还从该站点尝试了这个: https ://forum.unity.com/threads/ignore-collisions-by-tag-solved.60387/
function OnCollisionEnter (collision : Collision) {
if (collision.gameObject.tag == "Wall") {
Physics.IgnoreCollision(collision.collider, collider);
}
}
但它也不起作用。
有人知道如何解决这个问题吗?
解决方案
将它们放在不同的图层中,然后将它们设置为不会相互碰撞。
- 将墙添加到“墙”层。
- 将敌人添加到“敌人”层。
- 转到编辑-> 项目设置-> 物理。并停用这 2 层之间的碰撞。
推荐阅读
- ios - 在 Swift 中使用 Cloudkit 和 Core Data 重新安装应用程序后如何更新视图?
- delphi - 如果控件不可点击,我如何“恢复为继承”?
- python - 根据两个不同列中的各自值在 DataFrame 中创建新列
- python - 使用 Python matplotlib 排序水平条
- flutter - 如何从用户输入中计算文本字符串中的单词数
- javascript - 我的 JavaScript 附加函数有什么问题?
- php - 哪些用户态字符串会被 PHP 自动执行?
- c++ - MakeFile 添加库
- python - 如何根据另一列访问熊猫列中的值?
- python - 如何使用用户输入在 pymongo 中查找和更新