【特别鸣谢】参考视频:https://www.bilibili.com/video/av29751762/?p=7
在之前的博客中:https://blog.csdn.net/weixin_36372879/article/details/85252501
已经可以控制坦克的移动并且可以根据坦克不同的移动方向控制图片的转向,但是还是有很多问题没有解决,比如碰撞的问题
碰撞器的添加和解决抖动的问题
碰撞器
两个必要条件:
- 发生碰撞的物体身上都有碰撞器
- 其中一个物体是刚体,最好是运动的物体为刚体(因为刚体长时间不运动会休眠onDisable)
添加碰撞器
注意2D的碰撞器和3D的碰撞器的区别还是挺大的
需要注意hierarchy里面的预制体是克隆体,在这些预制体里面操作不会影响本来的预制体
要想影响原预制体可以点击apply
添加刚体
接着把map里面左右的组件都添加碰撞器
调整刚体的重力
如果不调整,坦克会一直往下面掉
但是可以看到,如果不解决抖动,那么刚体碰撞之后,坦克就歪过来回不去了。
解决旋转
把刚体的z轴锁上
就可以解决旋转的问题了。
但是当坦克贴墙角的时候,会有一个抖动的问题,会非常鬼畜
解决抖动
加上刚体之后,就会有一个物理受力的影响,希望受力相同,但是在update函数中,每一帧的时间不是固定的,这个与机器执行的情况有关,因此需要在fixedupdate里面定义来解决抖动的问题。
// Update is called once per frame
void Update()
{
}
private void FixedUpdate() //固定物理帧声明周期函数
{
float h = Input.GetAxis("Horizontal");
//输入乘以速度乘以时间, 第二个参数是以什么坐标轴来移动
//transform.Translate(Vector3.right * h, Space.World);
if (h < 0)
{
sr.sp