【Unity】2D低速子弹,既想穿透角色,又想触壁反弹

这里介绍一个我的做法(只是举例,别照搬,虽然照搬也没啥,但对整个项目不好)




演示视频:

视频录的跟印度糊糊一样,嘛也不是不能看



步骤:

  1. 新建一个layer层,名为BulletShadow。这里爱怎么起名怎么起名,我比较中二,起了个“影子子弹”的意思。并且这个新的layer层只与墙壁交互;
  2. 在子弹对象下创建个子对象,把它叫做shadow(也是爱叫啥叫啥),然后:
    1. 这个shadow对象赋予和子弹同样的RigidBody2D组件、Collider组件。“同样”的意思是,直接从子弹中右键复制组件粘贴到shadow对象上;
    2. shadow对象加上FixedJoint2D组件[2D关节],这个组件用于固定两者的相对位置,其中的ConnectedRigidbody直接绑子弹对象;
  3. 子弹对象的Collider组件中,IsTrigger要设置为真,这样才能穿透角色,同时,shallow对象的Collider组件中的IsTrigger必须设置为假,这样才能反弹;




图文说明:



小声bb:

标题强调是“低速子弹”,以区分“高速子弹”,因为高速子弹有另一套做法(只是我目前还没做)。

同时吐槽一下自己以前发的一篇水文[点击跳转],其中说到子弹速度越快,子弹就应该修的越长,但实际上修了往往会很糟糕,其实更常规的做法应该是使用Ray[搜索]来判断子弹沿途击中的目标(以及子弹是否该反弹)。



Github地址:

https://github.com/Ls-Jan/Unity_Demo_PenetrateBullet

猜你喜欢

转载自blog.csdn.net/weixin_44733774/article/details/127002576
今日推荐