2016-07-20 8 views
0

В моей игре с объединением2D запускается в устройстве, поэтому скорость игрока не равна нулю при столкновении с землей, и я использую функцию FixedUpdate() для игрового лоскута, статическое положение.Когда я запускаю игру в проигрывателе устройства, скорость не может быть равна нулю, когда умирает в единстве

void FixedUpdate() 
{ 
    // Jump 
    if (isAlive) 
    { 
     if (didFlap) { 
      didFlap = false; 
      myRigidbody.velocity = new Vector2(0,bounceSpeed); 
      anim.SetTrigger ("Flap"); 
     } 
    }if (myRigidbody.velocity.y >= 0) { 
     transform.rotation = Quaternion.Euler (0, 0, 0); 
    } else { 
     float angle = 0; 
     angle = Mathf.Lerp (0,-45,-myRigidbody.velocity.y/7f); 
     transform.rotation = Quaternion.Euler (0, 0, angle); 
    } 
} 
void OnCollisionEnter2D(Collision2D target) 
{ 
    if (target.gameObject.tag=="Ground") 
    { 
     die(); 
    } 
} 
void die() 
{ 
    if (isAlive) 
    { 
     isAlive = false; 
     anim.Play ("Died"); 
     myRigidbody.velocity = Vector2.zero; 
    } 
} 
+0

Итак, в чем проблема? –

+0

Игрок перемещается по земле, когда умирает – Chetan

+0

Хорошо, но здесь нет кода движения, и вы должны искать проблему. В 'die()' вы просто устанавливаете скорость на [0,0], но какой-то код все равно изменит скорость. Я могу рассказать вам больше, если вы разместите часть кода, ответственного за движение –

ответ

0

Итак, если я понимаю это право, вы все равно можете перемещать игрока после того, как они умерли в игре.

так, что вам нужно сделать, это когда игрок умирает, это сделать логическое значение, которое верно, когда игрок умирает

void Update() 
    { 
     if (dead == false) 
     { 
      //player movement code hear 
     } 
    } 

этот путь, если вы мертвы, чем вы не можете двигаться, потому что вы код управления игроком недоступен.

Надеюсь, это поможет.