所以我正在做一个简单的2d无尽的手机游戏。在游戏中,玩家对象(宇宙飞船)不断向上移动,然后玩家可以左右移动玩家以避开障碍物。
作为一名新手,我发现很难在玩家运动中实现非常平稳的动作。我看过许多教程,包括关于移动对象的统一官方教程。他们都使用简单的技术,如:
fixedupdate函数中的 rigidbody.velocity = (new Vector2 (0.0f, 1.0f)) * speed
或transform.Translate (velocity * Time.deltaTime * speed)
或rigidBody.MovePosition (rigidbody.position + velocity * Time.fixedDeltaTime)
或
只是在更新功能中随时更改transform.position
。
但是我使用的这些技术或代码都没有帮助我在我想要的玩家运动中实现非常平滑的动作。无论我尝试什么,我仍然在玩家运动中落后。我也尝试过切换刚体和改变刚体插值的刚体。但是我仍然无法在我们看到的第二场比赛中实现平稳运动,例如ios games shredd or split the dot。我认为这可能是我的电脑非常慢或者是什么原因导致我没有顺利运动但是我将我的项目运送到我的朋友计算机上,这是两倍的速度,我仍然有相同的结果。我还决定擦除所有决定擦除播放器控制器脚本中所有代码的条带,只关注移动播放器的代码,但结果没有改变。
我认为这是因为我只是使用一个非常简单且效率低下的代码来移动播放器,或者它可能与更改某些设置的统一性有关。所以问题是在团结中实现非常流畅的球员运动的最有效方法是什么。 (代码库和统一设置。)
目前我只是使用rigidbody.velocity = (new Vector2 (0.0f, 1.0f)) * speed
移动播放器,为了简单起见,我已将相机作为播放器的子对象。
谢谢。
答案 0 :(得分:0)
我会使用Vector3.Lerp来插入transform.position。这基本上在数学上平滑了两个位置之间的平移。
我经历过的其他事情是编辑器有时候比最终产品更加迟钝,所以我重新建立游戏并测试它以确定是否是这种情况。
最后,如果您使用transform.position移动对象,请确保数字相当小。 Bif数字显然会使对象跳得更多。