我开始学习统一,我面临着一个我无法摆脱的问题,那就是:但是我试图让动作平滑,它不像通常的视频游戏,无论 FPS 有多高或有多少不同我尝试实现逻辑的方法。
我尝试使用固定更新和固定增量时间,但似乎没有什么区别。
void Update()
{
movement = Input.GetAxis("Horizontal");
if ((movement > 0 && lookingLeft) || (movement < 0 && !lookingLeft))
{
lookingLeft = !lookingLeft;
transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
if (noOfJumps > 0 || jumping)
jumpInput = Input.GetAxis("Jump");
if (jumpInput > 0 && !jumping)
{
pressTime = 0;
jumping = true;
noOfJumps--;
}
else if (jumpInput == 0)
jumping = false;
else
pressTime += Time.deltaTime;
if (pressTime > 0.15f)
jumpInput = 0;
}
private void FixedUpdate()
{
rd.velocity = Vector2.Lerp(rd.velocity, new Vector2(movement != 0 ? speed *
movement * Time.fixedDeltaTime : rd.velocity.x * 0.95f, (jumpInput != 0) ? jumpInput * jumpSpeed * Time.fixedDeltaTime : -1), 0.9f);
}
我认为问题在于您从用户那里获取输入的方式。
如果您使用Input.GetAxis("Horizontal"),这将为您提供一个介于-1和1之间的值,并且该值将与玩家按下按钮的力度或时间成正比。
尝试使用.GetAxisRaw()代替.GetAxis(),这样您将根据玩家移动的方向获得值 -1 或 1,这将导致更快速的移动
movement = Input.GetAxisRaw("Horizontal");
Check 这个视频 https://www.youtube.com/watch?v=6IINXTKRey8关于主题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)