Question by
Flagster · Jan 21, 2016 at 03:07 PM ·
c#scripting problemjumpattack
What am i doing wrong with my jump attack ?
This is the script i am using.
using UnityEngine;
using System.Collections;
public class RogueController : MonoBehaviour {
public float maxspeed = 10f;
bool facingright = true;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask whatIsGround;
public float jumpForce = 700f;
public float attackRate;
private float nextAttack;
Animator anim;
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate()
{
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
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 Flip()
{
facingright = !facingright;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
void Update()
{
if (grounded && Input.GetKeyDown(KeyCode.UpArrow))
{
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce));
}
if(Input.GetKeyDown(KeyCode.Z) && Time.time > nextAttack)
{
nextAttack = Time.time + attackRate;
anim.SetBool("Attack", true);
}
else
anim.SetBool("Attack", false);
}
}
The jump animation is in a blend tree like in the tutorial, anyway i've tryied everything i could come up with to make the jump attack but i can't make the transition to work.Any tips ?
Comment
What is it doing/not doing? $$anonymous$$y best guess is the fact that you are using .AddForce()
inside the of void Update()
ins$$anonymous$$d of inside void FixedUpdate()
I moved
if (grounded && Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.UpArrow))
{
anim.SetBool("Ground", false);
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce));
}
in fixed update and added
if (grounded == false && Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Z))
anim.SetBool("jumpAttack", true);
I've made a bool jumpAttack in the animator and made the transitions, still the attack animation wont play in the jumping state. I've tryied moving
if (grounded == false && Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Z))
anim.SetBool("jumpAttack", true);
Both in fixed and normal update. Still no luck. Any help ?