How to Remove Delay in Button Click to Animation
I am a noob to Unity, i am making a simple game that need fast response. so in GUI, there will be some button. if i press button X then do Animation X, then if i press button Y then do Animation Y. Currently, i just create one button to test.
But There's a problem. Whenever i click button X, there's a delay around 1-2 seconds until animation play.
Animator Scheme:
Button onClick Target:
TalkingButtonScript.cs :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TalkingButtonScript : MonoBehaviour {
public Button Text;
public AudioClip sound;
public Animator ani;
public Canvas yourcanvas;
Animator myAnimator;
public PlayerAnimatorControllerScript cas;
void Start ()
{
Text = Text.GetComponent<Button> ();
ani.enabled = true;
yourcanvas.enabled = true;
}
public void Press()
{
PlayerAnimatorControllerScript.instance.talking_btn_clicked = true;
}
}
Maybe there's something wrong in my code, PlayerAnimatorControllerScript.cs :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAnimatorControllerScript : MonoBehaviour {
public static PlayerAnimatorControllerScript instance;
public float speed = 10.0f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
private float total =0.0f;
private Vector3 moveDirection = Vector3.zero;
CharacterController controller;
public Animator myAnimator;
float currSpeed, Param1;
bool Param2, Param3;
public bool talking_btn_clicked = false;
// Use this for initialization
void Start () {
instance = this;
controller = GetComponent<CharacterController> ();
myAnimator = GetComponent<Animator> ();
//myAnimator.SetBool ("TalkingStatus", true);
}
public void talkingActive()
{
Debug.Log ("set talking button = active");
talking_btn_clicked = true;
}
// Update is called once per frame
void Update ()
{
Param1 = 0;
Param2 = false;
Param3 = false;
if (controller.isGrounded) {
if (talking_btn_clicked == true) {
myAnimator.SetBool ("TalkingStatus", true);
}
currSpeed = speed;
if (Input.GetKey (KeyCode.LeftShift)) {
Debug.Log ("ShiftLeft Pressed");
Param2 = true;
currSpeed = speed / 2;
}
if (Input.GetKey (KeyCode.LeftControl)) {
Param3 = true;
}
Param1 = Mathf.Abs (Input.GetAxis ("Vertical"));
transform.Rotate (0, Input.GetAxis ("Horizontal"), 0);
myAnimator.SetFloat ("Speed", Param1);
myAnimator.SetBool ("Shift", Param2);
myAnimator.SetBool ("Attack", Param3);
moveDirection = new Vector3 (0, 0, Input.GetAxis ("Vertical"));
moveDirection = transform.TransformDirection (moveDirection);
moveDirection *= currSpeed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
Param1 = 0.2f;
}
}//==controller.isGrounded
if (!myAnimator.IsInTransition(0)) {
//Debug.Log("Animation is in Transition");
total = gravity * Time.deltaTime;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move (moveDirection * Time.deltaTime);
//Debug.Log("total = "+total);
}
}//==update
}//==class
btw, Thanks in advance...and sorry for my english...
Your answer
Follow this Question
Related Questions
Animator Check the end of an animation 1 Answer
I can't see or access a state in the Animation Controler 1 Answer
Animation from child object overrided by its parent and won't show in game window 0 Answers
Applying permanent mask to player animators walk 0 Answers
Delay Animator Action in C#? 0 Answers