GameObject disappears on Animation transition
I'm very new to Unity and coding in general. I got stuck with my player disappearing after it enters the scene and animation transitions from Walk state to Idle. I couldn't find a solution that would work.
I've tried to change the rotation Interpolation in the Animation to Euler Angles (Quanternion) and Quanternion - it doesn't seem to work.
The parameter that sets off animation transition is "isMoving" - when true transition to Walk state, when false transition to Idle state.
Here below is the player controller code.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrincessController : MonoBehaviour {
public float moveSpeed;
private Vector3 movePosition;
private Vector3 moveRotation;
private bool pathChosen;
private bool arriving;
private Vector3 bottomLeft = new Vector3 (0, 0, 0);
private Vector3 bottomRight = new Vector3 (Screen.width, 0, 0);
private Vector3 arrivalPosition = new Vector3 (Screen.width*0.5f, Screen.height*0.75f, 0);
Animator myAnimation;
// Use this for initialization
void Start () {
myAnimation = GetComponent<Animator>();
arriving = true;
pathChosen = false;
myAnimation.SetBool("isMoving", true);
}
// Update is called once per frame
void Update () {
//character arrives from behind the screen
if (arriving == true && movePosition != transform.position) {
movePosition = Camera.main.ScreenToWorldPoint (arrivalPosition);
transform.position = Vector3.MoveTowards(transform.position, movePosition, moveSpeed * Time.deltaTime);
}
//if character arrived at the initial spot
if (movePosition == transform.position && pathChosen == false) {
arriving = false;
myAnimation.SetBool ("isMoving", false);
}
//if player clicked on a path button
if (pathChosen == true) {
var angle = Mathf.Atan2 (moveRotation.y - transform.position.y, moveRotation.x - transform.position.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler (0, 0, angle + 90);
transform.position = Vector3.MoveTowards(transform.position, movePosition, moveSpeed * Time.deltaTime);
}
}
//buttonChoice defines what button was clicked: false means left button, true means right button
public void MoveToButton (bool buttonChoice) {
myAnimation.SetBool("isMoving", true);
pathChosen = true;
if (buttonChoice == false) {
movePosition = Camera.main.ScreenToWorldPoint (bottomLeft);
moveRotation = Camera.main.ScreenToWorldPoint (bottomLeft);
} else if (buttonChoice == true) {
movePosition = Camera.main.ScreenToWorldPoint (bottomRight);
moveRotation = Camera.main.ScreenToWorldPoint (bottomRight);
}
}
}
Scene VS Game View after disappearance:
I have also received the following warnings while I was attempting to solve the issue. If I'm not mistaken the last two appeared when I removed the line "myAnimation.SetBool ("isMoving", false);".
Your answer
Follow this Question
Related Questions
How to Apply Animation to Player 0 Answers
How do I apply an animation to a sprite? 0 Answers
Can't play an animation from the Animator 1 Answer
Problems with using the same Animator Controller on multiple objects. 0 Answers
Help with animator controllers 0 Answers