unity2d:角色在不同的手机上以不同的速度移动......(Deltatime?)

MrM*_*Mee 1 c# unity-game-engine

所以我有这个小程序,我的播放器来回反弹.他向左移动的样子如下:

if  ((runright == false) && (birdyDead == false)) 
{
    float currentposition = 0;
    currentposition = transform.position.x;

    Vector3 position = this.transform.position;
    position.x = currentposition - movespeed;
    this.transform.position = position;
    lookleft = true;            
}
Run Code Online (Sandbox Code Playgroud)

然而,我注意到,根据我正在调试游戏的手机,玩家以不同的速度移动.在某些极端情况下,他只是太快了.喜欢无法控制的快速...我读到也许我需要以某种方式将某些值与time.deltatime相乘,这对帧速率有所作为,这样无论我使用什么手机我的播放器总是以相同的速度.我猜我也需要对我的跳跃功能这样做,对吧?:

if (((Input.GetMouseButtonDown(0)) && (didjump == false) && (birdyDead == false)))
{
    GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpPower), ForceMode2D.Impulse);
    didjump = true;
    anim.SetBool("Jump", true);
}
Run Code Online (Sandbox Code Playgroud)

你能帮助我并告诉我怎么做才能让我的玩家仍然按照我想要的速度移动,但是增量时间也在游戏中吗?谢谢 :)

Gal*_*dil 6

您只需要乘以movespeed * Time.deltaTime,以使用每秒的距离速度而不是每帧的距离来更新位置.