使用Unity开发坦克大战游戏(二)

【特别鸣谢】参考视频:https://www.bilibili.com/video/av29751762/?p=7
在之前的博客中:https://blog.csdn.net/weixin_36372879/article/details/85252501
已经可以控制坦克的移动并且可以根据坦克不同的移动方向控制图片的转向,但是还是有很多问题没有解决,比如碰撞的问题

碰撞器的添加和解决抖动的问题

碰撞器

两个必要条件:

  1. 发生碰撞的物体身上都有碰撞器
  2. 其中一个物体是刚体,最好是运动的物体为刚体(因为刚体长时间不运动会休眠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
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值