- Home /
activate animation using another scripts
Hi guys here's the thing i want may character to do attack animation so the scenario is im using now is i have 2 scrip the 1st scrip is for the power meter bar that continuously go up and down and it will stop once mouse is click, 2nd scrip is for my character animation once click my character will do attack animation. both scrip is working well, but i want to change the scenario instead of attack animation by mouse click, what i want is may character will do the attack animation if my power meter bar hit the exact spot
here is my power meter code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineMove: MonoBehaviour
{
bool upOrDown = true; //whether we are moving up or down
bool stopped = false; //whether we have stopped or not
public float upSpeed; //our upwards movement speed
public float downSpeed; //our downwards movement speed
public float maxHeight; //the max height at which we will change direction
public float minHeight; //the min height at which we will change direction
public float minWinHeight; //the minimum height we must be at to win
public float maxWinHeight; //the maximum height we must be at to win
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{ //if the mouse is clicked
stopped = true; //then stop
Stopped();
}
if (!stopped)
{ //if we haven't stopped
MoveUpDown(); //move line
}
}
void MoveUpDown()
{
if (upOrDown)
{ //if we are moving up
transform.Translate(Vector3.up * upSpeed); //move up
if (transform.position.y > maxHeight)
{ //if we are at the max height
upOrDown = false; //switch to moving down
}
}
else
{ //if we are moving down
transform.Translate(Vector3.up * -downSpeed); //move down
if (transform.position.y < minHeight)
{ //if we are at the min height
upOrDown = true; //switch to moving up
}
}
}
void Stopped() //when we have stopped
{
if (transform.position.y > minWinHeight && transform.position.y < maxWinHeight)
{
Debug.Log("YOU WIN!!!"); //if line is between win min and max height we win or lose
}
else
{
Debug.Log("YOU LOSE");
}
}
}
and here is my attack animation
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class AnimatorXD : MonoBehaviour { private Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update() { if (Input.GetKey(KeyCode.Mouse0)) { anim.SetBool("isAttack", true); } else { anim.SetBool("isAttack", false); } } }
Answer by Nistroy · Feb 14, 2021 at 06:06 PM
The idea is these @adrianpogi14 :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineMove: MonoBehaviour
{
Attack attackScript;
bool upOrDown = true; //whether we are moving up or down
bool stopped = false; //whether we have stopped or not
public float upSpeed; //our upwards movement speed
public float downSpeed; //our downwards movement speed
public float maxHeight; //the max height at which we will change direction
public float minHeight; //the min height at which we will change direction
public float minWinHeight; //the minimum height we must be at to win
public float maxWinHeight; //the maximum height we must be at to win
void Start()
{
attackScript = GetComponent<AttackScript>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{ //if the mouse is clicked
stopped = true; //then stop
Stopped();
}
if (!stopped)
{ //if we haven't stopped
MoveUpDown(); //move line
}
}
void MoveUpDown()
{
if (upOrDown)
{ //if we are moving up
transform.Translate(Vector3.up * upSpeed); //move up
if (transform.position.y > maxHeight)
{ //if we are at the max height
upOrDown = false; //switch to moving down
}
}
else
{ //if we are moving down
transform.Translate(Vector3.up * -downSpeed); //move down
if (transform.position.y < minHeight)
{ //if we are at the min height
upOrDown = true; //switch to moving up
}
}
}
void Stopped() //when we have stopped
{
if (transform.position.y > minWinHeight && transform.position.y < maxWinHeight)
{
Debug.Log("YOU WIN!!!"); //if line is between win min and max height we win or lose
attackScript.Attack(); // Invoke Attack method
}
else
{
Debug.Log("YOU LOSE");
}
}
}
And in your Attack script
public void Attack()
{
anim.SetBool("isAttack", true);
}
Your answer
Follow this Question
Related Questions
Button press for Animations 1 Answer
My Scripts keeps giving me unexpecter char errors! 1 Answer
My animation is not playing 2 Answers
Animation not at correct position W/Video 0 Answers
Sliding Issue with my animation 1 Answer