Hey everyone,
I new to scripting and unity overall, and I am currently working on a platformer project.
I have added attacks to my character, but I want him to be unable to move while these are used.
What I need help with is adding waitforseconds in my script.
I have understood that I should use Coroutines, and have looked into that. However, I have a hard time figuring out how to add it into my script, Im not good enough to look at examples and just change it to fit MY script.
This is what my script currently looks like.
using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour
{
public float maxSpeed = 10f;
bool facingRight = true;
bool runningCoroutine;
bool attacking = false;
Animator anim; //shortcut for Animator
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask whatIsGround; //can tell what is ground
public float jumpForce = 700f;
void Start ()
{
anim = GetComponent<Animator> ();
}
//Movement
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));
{
if (!attacking)
GetComponent<Rigidbody2D> ().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D> ().velocity.y);
if (move > 0 && !facingRight)
Flip ();
else if (move < 0 && facingRight)
Flip ();
}
}
//Jump
void Update ()
{
if (!attacking)
if (grounded && Input.GetKeyDown (KeyCode.Space)) {
anim.SetBool ("Ground", false);
GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, jumpForce));
}
//Attack
if (anim.GetBool ("Claw"))
anim.SetBool ("Claw", false);
if (grounded && Input.GetKey (KeyCode.Q))
{
anim.SetBool ("Claw", true);
attacking = true;
}
if (anim.GetBool ("Sword"))
anim.SetBool ("Sword", false);
if (grounded && Input.GetKey (KeyCode.E))
{
anim.SetBool ("Sword", true);
attacking = true;
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
What I need is to set a WaitForSeconds after setting attacking = true;
Then have the player wait and then make it attacking = false;
Can anyone help me out? or explain how I should input this correctly or use another method?
Thanks!