2016-01-20 120 views
0

我创建了一个游戏像无限亚军是正常在Unity 5的游戏选项卡,但在Android设备上,当我做跳转它从未有过相同的高度。大小不同的跳时Android设备

[UPDATE与JhohnPoison答案]

:应用程序在Android 4.4.2测试和5.0
注2:某些值在检查员加入。

功能,使您遇到与帧速率的游戏相关的漏洞在运行跳跃

void FixedUpdate() { 
    CheckPlayerInGround(); 
    MakeJump(); 
    animator.SetBool("jump", !steppingDown); 
} 

void CheckPlayerInGround(){ 
    steppingDown = Physics2D.OverlapCircle(GroundCheck.position, 0.2f, whatIsGround); 
} 

void MakeJump(){ 
    if(Input.touchCount > 0){ 

     if((Input.GetTouch(0).position.x < Screen.width/2) && steppingDown){ 
      if(slide == true){ 
       UpdateColliderScenarioPosition(0.37f); 
       slide = false; 
      } 
      audio.PlayOneShot(audioJump); 
      audio.volume = 0.75f; 
      playerRigidbody2D.AddForce(new Vector2(0, jumpPower * Time.fixedDeltaTime)); 
     } 
    } 
} 
+0

编辑后,因此,没有起跳高度还是团结和设备之间有什么不同? –

+0

@JohnPoison是 – Ricardo

+0

您能否将我的答案标记为已接受? –

回答

5

。更高的帧速率,更新更频繁(最高60fps)。因此可以对身体施加不同的力量。

当你使用物理时,你应该在FixedUpdate中完成所有工作,并使用Time.fixedDeltaTime来缩放你的力(而不是使用常量“7”)。

void FixedUpdate() { 
    CheckPlayerInGround(); 
    MakeJump(); 
    animator.SetBool("jump", !steppingDown); 
} 

void CheckPlayerInGround(){ 
    steppingDown = Physics2D.OverlapCircle(GroundCheck.position, 0.2f, whatIsGround); 
} 

void MakeJump(){ 
    if(Input.touchCount > 0){ 

     if((Input.GetTouch(0).position.x < Screen.width/2) && steppingDown){ 
      if(slide == true){ 
       UpdateColliderScenarioPosition(0.37f); 
       slide = false; 
      } 
      audio.PlayOneShot(audioJump); 
      audio.volume = 0.75f; 
      playerRigidbody2D.AddForce(new Vector2(0, jumpPower * Time.fixedDeltaTime)); // here's a scale of the force 
     } 
    } 
} 

更多信息: http://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html http://docs.unity3d.com/ScriptReference/Time-fixedDeltaTime.html

相关问题