Collider组件与Rigidbody组件杂谈
先抛出问题:
Rigidbody组件是什么?有什么用?
Collider组件是什么?有什么用?
怎么实现碰撞事件?
怎么实现触发事件?
怎么又实现触发事件又实现碰撞事件?
Rigidbody组件:
简要来说,它是一个专门用于物理模拟的组件,这个组件允许你使用重力以及其他因素对游戏对象施加影响。Rigidbody组件还会受施加力的影响,从而产生更真实的运动效果。其属性如下所示:
主要介绍一下Is Kinematic属性:
如果启用了该属性,则附加该Rigidbody组件的物体不会与物理系统产生交互,就相当于没有了物理模拟,也就没有了碰撞、重力等物理现象了。该行为仅在某些特定情况下用。
Collider组件:
所有碰撞体的基类。这种组件决定了游戏对象何时以及怎样进入、离开其它对象的物理空间,抑或简单地碰撞并弹开。对于给定的游戏对象来说,只能添加一个Rigidbody组件,但可以添加多个Collider组件。其Box的属性如下
主要讲一下Is Trigger属性:
默认情况下,碰撞体的Is Trigger属性并未启用,物理系统会把碰撞体视为实体,当启用该属性时,游戏对象就会穿过该碰撞体。
怎么实现碰撞事件:
首先前提是碰撞双方必须有一方附加了Rigidbody组件,而且都必须附加至少一个Collider组件(未启用Is Trigger)。
然后就可以在脚本中接收到碰撞事件了,具体代码如下:
private void OnCollisionEnter(Collision collision){Debug.Log("Collision effect!"); }
碰撞的生效范围取决于你的设置。
怎么实现触发事件:
前提与碰撞事件一样,不同的是,必须有一方Collider的Is Trigger属性启用了。
然后就可以在启用Is Trigger属性的游戏对象上的脚本接收到该事件了,具体代码如下:
private void OnTriggerEnter(Collider other)//注意参数类型是Collider
{
Debug.Log("Trigger effect!");
}
实例:比如说靠近门的一定范围会自动打开、接近敌人会引发警报等
怎么又实现触发事件又实现碰撞事件
但是在开启了Is Trigger属性的游戏对象会被其他物体所穿过,即不在有碰撞的效果。
所以如果想要即有触发器的效果又有碰撞器的效果就需要在添加两个Collider组件,一个打开了Is Trigger,一个没有打开。
private void OnTriggerEnter(Collider other)
{if(other.gameObject.name=="PlayerName")//条件是触发对象为玩家{Debug.Log("Player detected -attack!");}
}
private void OnCollisionEnter(Collision collsion)
{if (collision.gameObject.name == "PlayerName")//条件是碰撞对象为玩家{ Debug.Log("Collision effect!");}
}
实例:比如说又想靠近敌人触发警报,又能够与敌人产生碰撞。
Collider组件与Rigidbody组件杂谈相关推荐
- vue 拓扑组件_Authing 登录组件优化实践解析
Authing Guard 是一种可嵌入的登录表单,可根据你的需求进行配置,它使你可以轻松添加各种社会化登录方式,以便你的用户可以无缝登录,并且在不同平台拥有一致的登录体验. Authing 2.0 ...
- bootstraptable 汇总_JS组件系列——表格组件神器:bootstrap table
前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...
- Vue父组件调用子组件的方法并传参的两种方式(用$refs.refName.functionName、window.function)
如需了解儿子怎么控制老子的,传送门:https://s-z-q.blog.csdn.net/article/details/120094689 父组件father.vue <template&g ...
- java拖动组件,[小娱乐] 一个能拖动组件、改变组件大小的容器
[小娱乐] 一个能拖动组件.改变组件大小的容器 /* * JDragpullPane.java * * Created on 2007年3月20日, 上午12:31 */ package javax. ...
- React子组件给父组件传值, 父组件引用子组件并给子组件传值
本博客代码是 React 父组件和子组件相互传值的 demo:实现封装一个折线图,折线图选择下拉框,获取下拉框点击的值并且传给父组件根据下拉框筛选的条件更新视图:效果图如下: 父组件代码: 代码解析: ...
- 微信小程序自定义组件之Picker组件
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 需求: 通过JS条件判断,满足条件就弹出Picker给用户选择一个数组里面的数据. 有些朋友可能会有疑问: 1 ...
- vue组件定义、组件的切换、组件的通信、渲染组件的几种方式(标签、路由、render)...
vue中全局的概念是什么?---就是全局定义的功能,所有实例化的vm都可以使用, 全局定义的是挂在构造函数Vue上面的,所以实例化出的对象都可以使用这个功能 1.什么是组件?---从UI的角度把页面 ...
- vue中子组件和子组件之间怎么通信_vue.js组件之间如何通信?
vue.js组件之间如何通信?下面本篇文章就来给大家介绍一下Vue.js组件间通信方式.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 平时在使用Vue框架的业务开发中,组件不仅仅要 ...
- react hooks使用_如何使用Hooks将React类组件转换为功能组件
react hooks使用 by Balaganesh Damodaran 通过Balaganesh Damodaran 如何使用Hooks将React类组件转换为功能组件 (How to conve ...
最新文章
- 一位资深Java架构师的晋级心得
- .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度...
- python编程培训-什么是Python?老男孩Python编程培训
- 图解首次使用流光5.0
- phphstudy运行不了网站_phpStudy访问速度慢和启动失败的解决办法
- Python——Python连接MySQL数据库
- cisco无线网络实施方案
- Mat的初始化以及Mat与数组的相互转化
- self_number
- 土方工程量计算表格excel_土方量调配表(Excel公式版)
- 人人都该懂点儿TCP
- 【2020年高被引学者】 车万翔 哈尔滨工业大学
- WhatsApp即时翻译WhatsApp聊天自动翻译成中文
- TensorFlow——decay设置
- Mysql 中英文排序
- Centos 安装 mysql5.7 示例教程
- matlab和opencv混编(mex问题,mexopencv问题)(水下相机折射补偿:Pinax-model)
- Apache Curator操作zookeeper的API使用
- LearnOpenGL 光照—多光源
- 重载、重写(覆盖)、重定义(同名隐藏)的区别