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

时间:2017-08-28 16:30:40

标签: c# unity3d

所以我有这个小程序,我的玩家来回反弹。他的左移动看起来像这样:

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;            
}

但我注意到,根据我正在调试游戏的手机,播放器以不同的速度移动。在某些极端情况下,他只是太快了。像无法控制的快速...... 我读过,也许我需要以某种方式将某个值与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);
}

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

1 个答案:

答案 0 :(得分:6)

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