2017-01-16 2 views
1

я делал движущуюся анимацию на проигрывателе и код выглядит следующим образом:Анимации не работает при переключении на оси управления на экран кнопки управления

if (Input.GetAxis ("Horizontal") > 0.5||Input.GetAxis ("Horizontal") < -0.5) { 
      myRigidBody.velocity = new Vector2 (Input.GetAxis ("Horizontal") * moveSpeed, myRigidBody.velocity.y); 
      robotMove = true; 
      lastMove = myRigidBody.velocity.x; 
     } 

     anim.SetFloat ("MoveX", Input.GetAxis ("Horizontal")); 
     anim.SetBool ("RobotMoving", robotMove); 
     anim.SetFloat ("LastMoveX", lastMove); 

, как вы можете видеть выше элементы управления осями управления (клавиатура) ,

Но я хочу, чтобы эти анимации работали над кнопками управления, которые я создал на экране!

У меня есть эти два butons, как показано на рис:

btns on screen

Я использую eventriggeronPointerDown и прилагается плеерgameobject так, чтобы вызывать эти функции:

public void moveleft(){ 
     myRigidBody.velocity = new Vector2 (-moveSpeed, myRigidBody.velocity.y); 
     robotMove = true; 
     anim.SetFloat ("MoveX", -moveSpeed); 
     anim.SetBool ("RobotMoving", robotMove); 
    } 

    public void moveright(){ 
     myRigidBody.velocity = new Vector2 (moveSpeed, myRigidBody.velocity.y); 
     robotMove = true; 
     anim.SetFloat ("MoveX", moveSpeed); 
     anim.SetBool ("RobotMoving", robotMove); 
    } 

    public void jump(){ 
     if (grounded) { 
      myRigidBody.velocity = new Vector2 (myRigidBody.velocity.x, jumpHeight); 
     } 

Теперь просто подобно тому, как осей управляет, игрок перемещается на некоторое расстояние (не непрерывно, если я продолжаю удерживать), но анимация, которая была работа над осями НЕ РАБОТАЕТ В ЭТИХ КНОПКАХ!

может кто-нибудь сказать, почему это происходит?

+0

Нужно также увидеть код для кнопок. Если мое предположение верно, вы просто делаете «MoveLeft()» в 1 кадре, который вы нажимаете на кнопку? – Maakep

+1

Да! 'moveLeft()' для левой и 'MoveRight' для правой. код выше @Fredrik – utkdub

ответ

1

, чтобы помочь другим я решить мою проблему следующим образом:

Посмотреть и можно назвать amin.setxxx только один или в update() или в каком-то внешнем function() вызова Так что я сделал, что я поместил все значения анимации положить в моей moveLeft() и функции moveRight() следующим образом:

public void moveLeft(){ 



     myRigidBody.velocity = new Vector2 (-moveSpeed, myRigidBody.velocity.y); 
     robotMove = true; 
     lastMove = myRigidBody.velocity.x; 
     anim.SetFloat ("MoveX", -moveSpeed); 
     anim.SetFloat ("LastMoveX", lastMove); 
     anim.SetBool ("RobotMoving", robotMove); 


    } 

    public void moveRight(){ 



     myRigidBody.velocity = new Vector2 (moveSpeed, myRigidBody.velocity.y); 
     robotMove = true; 
     lastMove = myRigidBody.velocity.x; 
     anim.SetFloat ("MoveX", moveSpeed); 
     anim.SetFloat ("LastMoveX", lastMove); 
     anim.SetBool ("RobotMoving", robotMove); 



    } 
    public void stop(){ 

     robotMove = false; 

     anim.SetBool ("RobotMoving", robotMove); 

    } 

Я зову эту остановку на eventTriggerOn pointerUp обоих левых и правых кнопок, чтобы остановить движение!

Смежные вопросы