- Home /
Having trouble with my attack animation code
Hi
I recently got into Unity Development and wanted to start off with a small 2D game to learn the engine. In this game the character has some sprite animations and one of these is the attack animation. I created the others with the help of this Unity tutorial
So I then imported my attack animation and added some code to get it to work. It did not work when I pressed my input key 'C' Here is my code and I have changed to bold the parts in which I have attempted to add the attack animation code.
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float maxSpeed = 10f;
bool facingRight = true;
Animator anim;
**public bool attack = false;**
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask isGround;
public float jumpForce = 700f;
void Start () {
anim = GetComponent<Animator> ();
}
void FixedUpdate () {
grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, isGround);
anim.SetBool ("Ground", grounded);
anim.SetFloat ("vSpeed", GetComponent<Rigidbody2D>().velocity.y);
float move = Input.GetAxis ("Horizontal");
anim.SetFloat ("speed", Mathf.Abs (move));
GetComponent<Rigidbody2D>().velocity = new Vector2(move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
if (move > 0 && !facingRight)
Flip ();
else if (move < 0 && facingRight)
Flip ();
}
void Update(){
if (grounded && Input.GetKeyDown (KeyCode.Space)) {
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0,jumpForce));
**if (grounded && Input.GetKeyDown(KeyCode.C)){**
**anim.SetBool("Attack", true);**
**attack = true;**
}
}
}
void Flip(){
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
After this I then went into my 'Animator' tab and created a boolean parameter called 'Attack' and then transitions to all other animations from and to attack with the conditions of attack is false to change from attack to a different state and attack is true to change from a state to attack.
If you need any more info or images of any kind I can provide it.
Thank you very much!
edit: realized you cant bold code text so my attack animation code has ** on either side
Answer by Inok · Jun 28, 2015 at 09:28 PM
Ok, you need move this block of code outside of line 47 if statement:
if (grounded && Input.GetKeyDown(KeyCode.C))
{
anim.SetBool("Attack", true);
attack = true;
}
So your code need to be something like that:
void Update()
{
if (grounded && Input.GetKeyDown (KeyCode.Space))
{
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0,jumpForce));
}
if (grounded && Input.GetKeyDown(KeyCode.C))
{
anim.SetBool("Attack", true);
attack = true;
}
}
Your answer
Follow this Question
Related Questions
Attack Animation not working 1 Answer
Create animation from script 0 Answers
how to display a single frame of a sprite animation 1 Answer
Efficient way to instantiate a sprite that plays an animation then destroys itself? (3d space) 1 Answer
add animation frames to existing spritesheet with animations? 0 Answers