找回密码
 立即注册
查看: 348|回复: 0

unity之路第二天——跳跃优化和子弹伤害

[复制链接]
发表于 2022-5-9 09:26 | 显示全部楼层 |阅读模式

2022.5.7 雨
今天做的并不多,能概括展开说说的只有跳跃手感的优化和子弹的伤害的实现。但有一些对前期的修改不会展开说,比如增加了子弹的射击和命中音效(之前只有命中音效),修改了角色跳跃的方法和逻辑等。
跳跃优化:

昨天实现了角色的移动,因为左右移动是用来虚拟轴,所以动起来也挺丝滑,但是跳跃手感就不敢恭维了,因为抛物线的原因,起跳和下落的时间是一样的。但是对于“跳跃”这个动作,玩家往往寄予更高的期待,期待落地感更强。表现之一便是落地的速度。



马里奥中起跳帧和下落帧的对比

从《马里奥》的案例中我们发现,下落速度一般会比起跳更快,具体的表现则在于:下落和起跳不共用一个加速度。
我们在update函数中写出跳跃检测的代码:
jumpPress = Input.GetButton("jump");
        if (jumpPress /*&& jumpCount > 0*/)//只在第一次按下跳跃时给一个向上的力
        {
           rb.velocity = Vector2.up * jumpForce;//起跳一瞬间给一个向上的初始速度,随着在空中的时间逐渐减少
        }
然后对是否持续按住跳跃键进行不同的决策:
if(rb.velocity.y > 0 && jumpPress)//起跳阶段
        {
            rb.velocity += Vector2.up*Physics2D.gravity.y*jumpAddition*Time.fixedDeltaTime;
            jumpCount = 0;
        }
        else if (rb.velocity.y < 0 && !jumpPress)//下落阶段
        {
            rb.velocity += Vector2.up*Physics2D.gravity.y*fallAddition*Time.fixedDeltaTime;
        }
我们可以看到起跳和下落分别乘了一个不同的系数,这个系数就决定了他们的加速度。也改变了不同阶段的速度。

子弹伤害:

其实这一步很简单。为了验证子弹的伤害,我特意新建了一个僵尸对象,然后初始化一定的血量。然后动态检测血量是否≤0,如果是,则销毁该对象。
关键在于,在子弹命中的碰撞检测处,要对碰撞的物体进行识别。我是用tag进行判断是否为Enemy,如果是,就调用改碰撞体的血量,让血量减一。
zombie z = collision.gameObject.GetComponent<zombie>();
z.health--;
这样就做到了,子弹碰撞到tag为Enemy的对象是,对他进行血量减一的操作,一旦敌人血量≤0,则销毁自身。

好了写完了,睡大觉zZZ

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 12:27 , Processed in 0.090304 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表