zoukankan      html  css  js  c++  java
  • Unity3D碰撞检测及Trigger触发器的使用及注意事项

    首先新建一个Cube,其本身就已自带了碰撞器Collider,如图

    要使用Trigger检测物体进入,则需要勾选Is Trigger选项
    碰撞检测触发器Trigger 有别于碰撞检测器 Collision,其可以不受物理效果影响,一些可穿透区域的碰撞检测,可以使用Trigger来进行碰撞检测
    常用方法如下:
    OnTriggerEnter 进入时
    OnTriggerExit 离开时
    OnTriggerStay 处于时

    同上碰撞检测器 Collision 也有3个方法:
    OnCollisionEnter
    OnCollisionExit
    OnCollisionStay

    这里我们需要为跑道添加一个终点撞线的机制,所以使用可穿透的碰撞检测触发器Trigger

    代码如下:

    1
    2
    3
    4
    5

    void OnTriggerEnter(Collider collider)
    {
            print(collider.gameObject.name + ":" + Time.time);
    }

    OnTriggerEnter传入的参数必须为Collider,故能触发该函数的对象必须具有Collider组建。这里我们用的是角色控制器Character Controller 自带了Collider组建
    此时每当有角色撞线时即会打印角色名及系统时间

    接下来我们使用碰撞检测器 Collision 来进行一个碰撞检测
    首先取消被撞击对象上的Is Trigger选项,并添加脚本代码如下

    1
    2
    3
    4
    5

    void OnCollisionEnter(Collision collision)
    {
            print(collision.gameObject.name + ":" + Time.time);
    }

    此时用例为两个cube,需要注意的是,撞击者cube均要添加刚体组件,否则无效,Trigger同理。
    同时cube的长宽高,不能为0,否则无法触发。
    另一问题是角色控制器的胶囊体与Cube Collider碰撞不激活碰撞检测,但是手动往前推动一下就会触发,该问题目前尚未解决,有知道的朋友欢迎留言讨论。

    本篇疑问尚且留存,待解决后更正。

    转载链接:http://coder.beitown.com/archives/572

    转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢

  • 相关阅读:
    tif文件导入postgresql
    与你相遇好幸运,使用redis设置定时任务
    用sinopia搭建npm私服
    Postman设置Header不生效问题
    iOS 动态加载LaunchScreen上的图片
    iOS 封装一个带复制功能的UILabel
    ios开发文字排版,段落排版,富文本
    iOS使用hitTest和loadView处理UIView事件传递
    iOS 更改状态栏颜色和隐藏状态栏
    iOS scrollView嵌套tableView的手势冲突解决方案
  • 原文地址:https://www.cnblogs.com/dacheng/p/2977461.html
Copyright © 2011-2022 走看看