transform.Translate来控制物体移动的一个坏处,无法实现真正的物理施力、碰撞反弹等状况

笔者本来是想对发射出去的子弹实现一个功能,不断向前运动,在接触到墙壁的时候进行反弹
首先笔者是已经将Bounciness为0.8的Physic Material 赋给了子弹的collider身上
但反弹仍然是不成功,可以看下图。在这里插入图片描述
如上图所示,在蓝色墙壁上的子弹一直停留在那,不会进行反弹
为此笔者最初以为是自己的rigidbody和collider设置有问题
但后来发现无论怎么测试都不成功
直到后来输出了一下子弹的速度后(看下图)
在这里插入图片描述
才想起来使用transform.Translate来控制物体的移动
物体是不会有速度,更加不会有收到力的情况
既然没有力,那物体的碰撞反弹又怎么可能可以实现呢?
于是后来换用
rb.velocity = transform.up * BulletSpeed;//给子弹附加速度
接着子弹便能实现碰到墙壁后实现反弹

总结‘:transform.Translate的确能实现物体移动,但和真正的物体受到力进而实现的移动是不同的。最初的情况下子弹不会反弹因为子弹本身没有力也没有速度的同时,transform.Translate一直控制着子弹向上运动,于是乎便会一直停留在墙壁边上

发布了2 篇原创文章 · 获赞 0 · 访问量 17

猜你喜欢

转载自blog.csdn.net/qq_43233423/article/details/104676321
今日推荐