标签:fallmultiplier jump 角色 better rb 跳跃 velocity 马里奥
之前一提起角色的跳跃,想当然的想法就是:给角色一个向上的初速,然后由Unity的物理系统接管就好了嘛,这样忽略空气摩擦的影响,根据重力加速度,角色向上跳到最高点的时间和由最高点落下的时间相等,不是很合理嘛。最近看了几篇文章才发现,这样的想法是错误的。
仔细观察马里奥这类经典平台跳跃游戏其实可以发现,角色向上运动的过程占的帧数达到跳跃全过程总帧数的约2/3,就是说其实马里奥下落的更快。这样设计的原因就是如果角色上下的时间相等,会在下落时给玩家带来一种漂浮感,这是我之前没有仔细考虑的。
那么如何优化呢?加入几行代码即可:
public float fallmultiplier = 2.5f; public float lowmultiplier = 2f; Rigidbody2D rb; private void Awake() { rb = GetComponent<Rigidbody2D>(); } private void Update() { if (rb.velocity.y < 0) { rb.velocity += Vector2.up * Physics2D.gravity.y * (fallmultiplier - 1) * Time.deltaTime; } else if (rb.velocity.y > 0 && !Input.GetButton("jump")) { rb.velocity += Vector2.up * Physics2D.gravity.y * (lowmultiplier - 1) * Time.deltaTime; } }
当物体向下运动时添加系数fallmultiplier 使下落时加速度更大。
上面第二段条件语句里面还实现了玩家轻按跳跃键时跳不高,只有长按才跳得高的设定。
标签:fallmultiplier,jump,角色,better,rb,跳跃,velocity,马里奥 来源: https://www.cnblogs.com/yuiyui19911002/p/15880227.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。