碰撞检测是2D游戏开发里经常要用到的东西,当我们做个游戏demo的时候,碰撞检测基本上无处不在,利用碰撞检测可以实现一些比较基础功能,比如碰撞,跳跃的地面检测,和NPC交互的检测,拾取物品的检测等等。
开始之前先做关键字索引:unity中如何使用接口类?那么当用unity来实现游戏交互的时候我们该怎么做?这时候能不能让collider只需要检测一样东西,就可以触发碰撞物体的各种不同效果呢?接口很好的让玩家与外部物体解耦,不再需要把逻辑细节绑定在玩家身上处理。
VRTK可以使用射线拾取物体。这条射线从VR控制器(如手柄)发射,并指向手指所指的方向。我们可以通过调用射线的方法,如Raycast,来检测射线是否与物体相交。射线拾取是一种常见的VR交互方式,允许玩家在虚拟世界中通过准心发射一条射线,并与玩家选择的物体进行交互。
这样就当点击在UI上时只响应UI事件了,如果同时也要响应3D物体上的事件则只能再次用射线检测点击处是否有3D物体(3D物体一般都有Collider)。
射线是三维世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射。例如,自动巡逻的敌人在视野前方发现玩家的时候会向玩家发起攻击,这时候就需要使用射线了。接下来我们通过一个案例来了解射线在游戏开发中的应用。对象,从摄像机发出到单击处的射线。函数将射线可视化。
关于射线检测实现子弹射击效果3D游戏场景中发射子弹,为了避免子弹穿透的问题,考虑通过射线检测,从枪口发出一条射线,在枪的射程范围内判断碰撞,发生碰撞证明击中物体,在发生碰撞的位置生成一个弹孔特效。(1)射线检测与组件LineRenderer的使用
射线碰撞检测,就是由某一物体发射出一道射线,射线碰撞到物体之后,可以得到该物体的相关信息,然后就可以对该物体进行一些操作的过程了。射线的发射分为可见和不可见,可见的情况就是在游戏当中你可以看到射线,而不可见就是游戏运行时,你只可以在Scene试图下观察到它,而这到射线又是存在的;另一种情况:需要在发射射线的物体上添加LineRenderer组件;
在该场景,你触摸触摸板后,手柄发射一条曲线,按下并释放触摸板进行选择。2、为有手柄添加组件【VRTK_ControllerEvents】(监听手柄事件的脚本)【VRTK_StraightPointerRenderer】(发射直线的的脚本,可以更改射线样式和颜色)【VRTK_Pointer】(渲染射线指针的)将本物体的拖入,如下图:左手柄发射射线漫游:
碰撞体检测,但是除了碰撞体检测外还有很多方法各有千秋,这里介绍两种自己做游戏用的比较多的方法如果想让自己的探测射线一直处于可见状态,利于编程,可以使用如下的重载函数OverlapCircle检测某个碰撞体是不是在某个圆形区域内,返回碰撞体,如果有多个,返回z轴最小的碰撞体,若没有返回false
然后我们通过以下代码设置一条2d射线用来测试然后我们重新写一段3d射线用来新的测试特性1:2d射线只能检测2d碰撞体,同样3d射线只能检测3d碰撞体,射线只能对有对应有碰撞体的对象产生反馈有时候2d游戏可能需要针对鼠标进行检测,必然道具,或者人物,这个时候如果用3d射线指向外进行2d检测是无法进行检测的
使用此种方式我们可以使用一条看不见的具有一定长度的射线来检测是否与其他的碰撞器之间发生了接触,此种功能的实现是通过物理类中的raycast函数来实现的。类函数中我们可以使用raycast来发射一条射线来检测是否与其他的碰撞器发生了碰撞。然后我们在场景中创建一个Cube物体,在Cube物体中BoxCollider这样我们就可以检测我们的射线是否碰撞了我们的盒子物体。
射线碰撞检测,就是由某一物体发射出一道射线,射线碰撞到物体之后,可以得到该物体的相关信息,然后就可以对该物体进行一些操作的过程了。射线的发射分为可见和不可见,可见的情况就是在游戏当中你可以看到射线,而不可见就是游戏运行时,你只可以在scene试图下观察到它,而这到射线又是存在的;另一种情况:需要在发射射线的物体上添加linerenderer组件;
DrawRay方法,参数传递的是射线的发射点和射线反向queriesStartInCokkiders=false,来忽略一开始射线检测的游戏内部collider组件OverlapCircle】方法,这个方法通过一个circle(圆形)区域去进行检测,如果检测到任何的collider的碰撞器组件对象,会返回collider2d类型的变量
文章目录前言判断物体是否在阴影中原理主要是用射线检测步骤找到射线的起始位置和方向射线的碰撞检测如果碰到带阴影的物体就判断下源码以下源码,挂载到要判断的物体上即可,指定下Light和要显示的Text总结欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~声明:本博文章若非特殊注明皆为原创原文链接