2D游戏跳跃下落速度问题

有些2D游戏会感觉到向上跳跃和下落速度不一致,感觉下落时更干脆一些,比如马里奥,不过也跟具体的项目需求手感有关系。

直接上代码。下面是优化下落速度手感的代码。

using UnityEngine;public class BetterJump : MonoBehaviour
{public float fallMultiplier = 2.5f; //下落速度倍数public float lowJumpMultiplier = 2f; //长按跳跃bool isPressJump;Rigidbody2D rb;private void Awake(){rb = GetComponent<Rigidbody2D>();}public void Update(){if(Input.GetButton("Jump")){isPressJump = true;}else{isPressJump = false;}}public void FixedUpdate(){if(rb.velocity.y < 0) //下落速度{rb.velocity += Vector2.up * Physics2D.gravity.y * (fallMultiplier - 1) * Time.deltaTime;}else if (rb.velocity.y > 0 && !isPressJump) //不按跳跃时减缓跳跃(如马里奥){rb.velocity += Vector2.up * Physics2D.gravity.y * (lowJumpMultiplier - 1) * Time.deltaTime;}}
}

跳跃手感优化

如果操作都放在Update中有时会出现跳跃手感不一致的情况。
优化跳跃手感的核心思路就是按键检测放在Update中,物理相关的放到FixedUpdate中。
代码示例

 public Transform groundCheck; //玩家脚底public LayerMask ground; //地面layerpublic float jumpForce;public bool isGround, isJump, isJumpPressed;private void Update(){if(Input.GetButtonDown("Jump")){isJumpPressed = true;}}private void FixedUpdate(){isGround = Physics2D.OverlapCircle(groundCheck.position, 0.1f, ground);if (isJumpPressed && isGround){rb.velocity = new Vector2(rb.velocity.x, jumpForce);isJumpPressed = false;}}

Unity 2D游戏跳跃优化相关推荐

  1. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  2. Unity 2D游戏开发快速入门(内部资料)

    Unity 2D游戏开发快速入门(内部资料) 试读样张:http://pan.baidu.com/s/1hqh5oqw Unity 2D游戏开发快速入门4 前  言 Unity是一款综合的游戏开发工具 ...

  3. 【Unity】Unity 2D游戏开发(一)U2D基础功能

    文章目录 Unity 2D游戏开发基础知识 Animation动画 SortingLayer层排序 Physics 2D物理2D Rigidbody 2D刚体 示例 1.点击鼠标发出子弹 2.子弹打中 ...

  4. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  5. Unity 2D游戏开发教程之为游戏场景添加多个地面

    Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...

  6. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

  7. ​Unity 2D游戏开发教程之2D游戏的运行效果

    ​Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑 ...

  8. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  9. Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...

最新文章

  1. Js中最常见的异常捕捉 TryCatch
  2. js数据结构和算法(8)-图
  3. 函数不可访问_关于可重入函数
  4. spring boot druid 监控没有sql记录
  5. leetcode617. 合并二叉树(dfs)
  6. windows(win7,win8,xp)hosts文件找不到原因分析及解决方法
  7. 云服务器饥荒_运用双腾讯云搭建《饥荒》多人联机服务器
  8. A Hierarchical Deep Temporal Model for Group Activity Recognition
  9. pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...
  10. Sigmod/Softmax变换
  11. 弹性力学方程 有限差分法matlab,泊松方程的有限差分法的MATLAB实现
  12. 阿里云云平台的物理安全防御措施
  13. 魔兽争霸官方平台支持Linux,首页-魔兽争霸官方对战平台
  14. 论剑乌镇-热点轮换谁能屹立不倒
  15. 1138 Postorder Traversal
  16. 国外服务器网站打开速度慢,使用国外服务器时访问为什么很慢?
  17. 测试/开发程序员值这么多钱么?“我“不会愿赌服输......
  18. 信息系统项目管理师第四版(最新)重点(背诵)内容概览
  19. ADOBE pr000的下载安装+基本操作
  20. 985大学计算机专业起薪,985名校毕业生有多值钱?看完这份大学毕业生薪酬榜你就知道了...

热门文章

  1. NX二次开发-UFUN替换组件UF_ASSEM_substitute_component
  2. deepin安装python3.8.1_deepin安装Python3.8以及使用pip3遇到的问题
  3. 基于微信小程序的旅游系统设计与实现(毕业论文)
  4. 英语四级真题作文 计算机,英语四级作文 Computers-计算机
  5. ECG信号读出,检测QRS,P,T 波(小波去噪,并根据检测),基于BP辨识的神经网络...
  6. 新星微前端MicroApp的基础教程
  7. bert预训练实战篇-持续更新
  8. 2021“快手光合创作者大会”背后的服务新理念
  9. y70.第四章 Prometheus大厂监控体系及实战 -- Prometheus监控介绍(一)
  10. 【送书福利-第十期】清华社 IT BOOK 多得图书活动 ~!