Unity3D使用时发现的问题及解决方法(触发碰撞条件)

Unity3D使用时发现的问题及解决方法(触发碰撞条件),第1张

原因:放的太大了。。缩小可见区,放大字体,改成resize freely 

要产生碰撞必须为物体添加刚体组件和碰撞器,刚体可以让物体在物理条件下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器

碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。

触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。

触发信息检测:

1MonoBehaviourOnTriggerEnter(Collider collider)当进入触发器

2MonoBehaviourOnTriggerExit(Collider collider)当退出触发器

3MonoBehaviourOnTriggerStay(Collider collider)当逗留触发器

碰撞信息检测:

1MonoBehaviourOnCollisionEnter(Collision collision) 当进入碰撞器

2MonoBehaviourOnCollisionExit(Collision collision) 当退出碰撞器

3MonoBehaviourOnCollisionStay(Collision collision)  当逗留碰撞器

碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性

当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;

当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。

碰撞器是另一种组件,它和刚体一起,来使碰撞发生。如果两个刚体撞在一起,物理引擎将不会计算碰撞除非它们包含一个碰撞器组件。没有碰撞器的刚体,会在物理模拟中相互穿透。碰撞器必须独立于刚体加在对象上。碰撞器并不一定需要附加刚体,但是要使移动物体具有碰撞效果必须附加刚体。为了使两个触发器碰撞时发出碰撞事件,其中一个必须包含刚体

查看collider的相关文档>

解决这个问题有很多方法。

1、将 b 中的 int bbb 设置为静态变量 。

2、

void OnTriggerEnter(Collider coll)

{

if (collname == "b")

{

aaa += collGetComponent<b>()bbb;

}

}

如果还不明白加我QQ 1015302257

你写的是 触发检测,不是碰撞检测。关于你的这个问题,你可以判断一下这个触发的对象本身所带的碰撞器类型。

 void OnTriggerStay2D(Collider2D other)  {

        if (otherGetComponent<BoxCollider2D>()) return;

        if (otherGetComponent<PolygonCollider2D>())

        {

            //执行内容

        }

    }

或者你对于带有boxCollider2d的不想被触发的物体使用一个tag标记一下或放到一个碰撞层中,然后检测这个物体的tag是否是带有boxCollider2d的tag,然后return;或者直接忽略触发器所在的碰撞层和不想被触发的碰撞层就可以了。

在你要检测是否被碰撞的物体上加任何一种Collider,然后在IsTrigger那里打勾。写代码时可以用Function OnTriggerEnter、Function OnTriggerStay、和Function OnTriggerExit。这些Function都是用来检测碰撞的。

举例:

var pengzhuang : boolean;

Function OnTriggerEnter () {

pengzhuang = true;

}

把这些代码放到你要检测碰撞的GameObject上,然后那个GameObject被碰撞时pengzhuang就会变成True了。

1、首先,打开Unity,创建一个圆球和一个平面。

2、将球的高度调高一点,让它位于平面上空。

3、给球体添加刚体,输入rigidbody,如下图所示。

4、点击运行,带有刚体组件,可以看到小球自然下落到平面上。小球、平面上自带碰撞器,所以小球不能穿过去。

5、可以自己给平面一个碰撞器,点击添加碰撞器,如下图所示。

6、添加好后,可以调整碰撞器的大小,由于是规则图形,所以创建出来的碰撞器与平面非常贴合,改变一下碰撞器的大小为x、y大小为11。

7、可以看到碰撞器已经出现在我们的视野中,可以调整大小以适合物体或角色,这样可以完美模拟现实中的碰撞效果。

void OnCollisionEnter(Collision collision)//碰撞进入

{

Destroy (collider gameObject );//销毁碰撞物

}

我想把这个给主角就可以了。

至于判定是什么类型的物体,可以尝试用tag来进行标记。

我也是新手,如果见解不当,希望指正,多谢。

以上就是关于Unity3D使用时发现的问题及解决方法(触发碰撞条件)全部的内容,包括:Unity3D使用时发现的问题及解决方法(触发碰撞条件)、unity3d碰撞发生时如何在一个脚本中得到碰撞和被碰撞对象、编程unity,碰撞到的物体,获取碰撞物体里的一个值,脚本该怎么写求具体写法,写个例子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10145887.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存