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触发交互的几种方式的主要内容,如果未能解决你的问题,请参考以下文章

app与后台交互之间的几种安全认证机制

Python 与 C/C++ 交互的几种方式

Python 与 C/C++ 交互的几种方式

Python 与 C/C++ 交互的几种方式

实现交互式shell的几种方式:python pty 方式升级ncsocatscript获取pty

实现交互式shell的几种方式:python pty 方式升级ncsocatscript获取pty