У меня есть сценарий с именем AccelerometerMovement
, который занимается управлением акселерометром игрока. Игрок просто двигается слева и правый, поэтому я просто принимаю Input.acceleration.x
компонент.Акселерометр остановки анимации Запрос на перемещение
Сценарий выглядит следующим образом:
public class AccelerometerMovement : MonoBehaviour {
private bool isandroid;
private float AccelerometerStoreValue;
private robotController theRobo;
// Use this for initialization
void Start() {
theRobo = FindObjectOfType<robotController>();
#if UNITY_ANDROID
isandroid=true;
#else
isandroid=false;
#endif
}
// Update is called once per frame
void Update() {
if (isandroid) {
//android specific code
Accelerometer();
} else {
//any other platform specific code
}
}
void Accelerometer(){
AccelerometerStoreValue = Input.acceleration.x;
if (AccelerometerStoreValue > 0.1f) {
//right
theRobo.moveRight();
} else if (AccelerometerStoreValue < -0.1f) {
//left
theRobo.moveLeft();
}
}
}
Как вы можете видеть выше, в соответствии с левой и right..it звонит moveLeft() и moveRight() из другого сценария, который является фактическим скрипт контроллера.
Другой сценарий, когда фактическая функция:
// after Update()
public void jump(){
if (grounded) {
myRigidBody.velocity = new Vector2 (myRigidBody.velocity.x, jumpHeight);
doubleJump = false;
}
if(!doubleJump&&!grounded){
myRigidBody.velocity = new Vector2 (myRigidBody.velocity.x, jumpHeight);
doubleJump = true;
}
}
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);
}
Теперь, когда я проверил управления на реальном устройстве элементы управления работают хорошо, но есть одна проблема!
Проблема заключается в том, что, когда игрок начинает движение анимации начинается движение, но когда он останавливает простой анимации (или остановить анимацию) не запускается и даже тогда, когда еще движение анимация игрока продолжает идти.
Теперь я не могу понять, как решить эту проблему.
Это C# не Unityscript. Пожалуйста, поймите это. Вы, скорее всего, получите дополнительную помощь, если получите правильные теги. Вы можете использовать Unity C# для Unityscript, чтобы увидеть разницу. – Programmer
Хорошо, я изменил его! Но знаете ли вы решение @Programmer? – utkdub
Не совсем, но, пожалуйста, отредактируйте свой код и добавьте, какая часть кода должна остановиться и воспроизвести простоя анимации. – Programmer