J'ai un script nommé AccelerometerMovement
qui s'occupe des commandes accéléromètre du lecteur. Le joueur se déplace juste gauche et droite alors je prends juste le composant Input.acceleration.x
.Accéléromètre stop animation Mouvement requête
Le script est la suivante:
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();
}
}
}
Comme u peut voir ci-dessus selon la gauche et right..it appelle moveLeft() et MoveRight() à partir d'un autre script qui est le véritable script du contrôleur de joueur.
L'autre scénario où la fonction réelle est:
// 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);
}
Maintenant, quand je vérifié les contrôles sur l'appareil réel les commandes fonctionnent bien, mais il y a un problème!
Le problème est que lorsque le joueur commence à se déplacer l'animation de démarrage du mouvement, mais quand il arrête la animation au ralenti (ou arrêter l'animation) ne démarre pas et même quand encore l'animation de mouvement des joueurs continue à aller.
Maintenant, je ne suis pas capable de comprendre comment résoudre ce problème.
Ceci est C# non Unityscript. S'il vous plaît, comprenez ça. Vous obtiendrez probablement plus d'aide si vous obtenez les tags correctement. Vous pouvez google Unity C# vs Unityscript pour voir la différence. – Programmer
Ok, je l'ai changé! Mais connaissez-vous la solution @Programmer? – utkdub
Pas vraiment, mais s'il vous plaît modifier votre code et ajouter quelle partie du code devrait s'arrêter et jouer les animations inactives. – Programmer