- Home /
Help with attacking, and death animation. Unity 5 javascript
Ok, I am trying to add a death animation, and an attack on hit animation; and I cannot seem to make anything work. There exist no errors, but when I click play the game goes from idle to being hit animation without me left clicking and just loops it over again.
Here is what shows for errors as I play.
MissingComponentException: There is no 'Animation' attached to the "slime" game object, but a script is trying to access it. You probably need to add a Animation to the game object "slime". Or your script needs to check if the component is attached before using it. UnityEngine.Animation.Play (System.String animation) (at C:/buildslave/unity/build/artifacts/generated/common/modules/Animations.gen.cs:601) Enemy.OnMouseDown () (at Assets/Enemy.js:36) Enemy.Update () (at Assets/Enemy.js:14)
'slime' AnimationEvent has no function name specified!
Here is my code!
#pragma strict
var health : int = 100;
var tapdmg : int = 10;
function Start () {
}
function Update () {
if(Input.GetMouseButton(0))
Debug.Log("Pressed Left Click.");
OnMouseDown();
if(health <= 0)
{
Dead();
}
}
function ApplyDamage (tapdmg : int)
{
health -= tapdmg;
}
function Dead()
{
GetComponent.<Animation>().Play ("slimedeath");
}
function OnMouseDown ()
{
ApplyDamage(10);
GetComponent.<Animation>().Play ("hit");
}
Answer by median · Jun 06, 2015 at 05:11 PM
Use OnMouseDown function when you have a collider on a gameObject then want to click on it as you can see on docs
then better to named as Clicked() because it already do something else.
try to use Animator instead Animation component in your project that you can see the bugs visually. its new and easy!
anyway you can fix your script with some change:
var playerAnimation = GetComponent.<Animation>();
var isDead:boolean = false; // to play dead animation once
function Update ()
if(health <= 0 && !isDead)
{
Dead();
isDead = true;
} else if(Input.GetMouseButtonDown(0)) { // use down to play hit animation once
ApplyDamage(10);
playerAnimation.CrossFade ("hit"); // use crossfade to transition between animation clips
}
}
also can use playerAnimation.Stop(); if you want to sure the previous clip is stopped
Your answer
Follow this Question
Related Questions
How to access Animation using java script & attach it to the object ? 2 Answers
Horizontal axis not working after animation 1 Answer
Animation depending on the Int value 0 Answers
How to loop unity?JS 3 Answers