Unity触发交互的几种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity触发交互的几种方式相关的知识,希望对你有一定的参考价值。
参考技术A 自己刚刚接触Unity,觉得很有意思,了解了几种触发方式,记录一下方便以后查阅简单来说就是用眼神杀死你
origin 是光源点
direction 是发出的方向
maxDistance 是光线的距离
hitInfo 如果返回值是true,它会回调出被碰撞物体的信息
layerMask 是选定当前层内碰撞器,忽略其他层
queryTriggerInteraction 指定查询指令是否撞击触发器
返回值判断光线是否与其他物体交互
void OnControllerColliderHit(ControllerColliderHit hit) 只有添加角色控制器组件才会触发这个方法, hit为碰撞的对象,例子如下
只要两者有一个勾选Is Trigger 选项, 在碰撞范围内并且有一个有刚体组件就会触发 OnTriggerEnter方法,
可以调节触发范围的大小,来达到你想要的碰撞范围
只有都没有勾选Is Trigger 选项,并且发起的碰撞的一方要有刚体,就会触发此方法
如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。
如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。
以上是自己学习了解到的 ,如有不对请大神们指出来
Unity中UGUI人物血条跟随的几种实现方式
具体场景布置请参考上一篇博文http://blog.csdn.net/u011185231/article/details/50363392
现在我们讲第二种,相比第一种也很简单
大概原理是:把Player的世界坐标转为屏幕坐标,血条坐标就等于Player的屏幕坐标加上Player中心点到头顶的差值
首先创建Canvas(注意这里的Canvas不要作为Player的子物体)并创建Slider,并且把slider下面的Background和Handle Slide Area删除掉或者禁用掉。大概布局就是这样!
具体血条制作也跟上篇相似,这里不多讲。效果如图
在Player身上加一个Follow脚本,在Player身上加脚本而不在slider身上加脚本的原因是我想让血条超出屏幕就关闭显示,这样对优化有好处
脚本也很简单,几行代码就能实现一个很炫酷的功能:
public float xOffset;
public float yOffset;
public RectTransform recTransform;
void Update ()
Vector2 player2DPosition = Camera.main.WorldToScreenPoint(transform.position);
recTransform.position = player2DPosition + new Vector2(xOffset, yOffset);
//血条超出屏幕就不显示
if (player2DPosition.x > Screen.width || player2DPosition.x < 0 || player2DPosition.y > Screen.height || player2DPosition.y < 0)
recTransform.gameObject.SetActive(false);
else
recTransform.gameObject.SetActive(true);
点击运行就能看到血条已经在头顶显示了,并且如果角色不在屏幕内,血条会自动关闭。
是不是很带感!
以上是关于Unity触发交互的几种方式的主要内容,如果未能解决你的问题,请参考以下文章