- Home /
Delayed Cooldown
How do I add delay before a cooldown starts? Here's my code for context:
using UnityEngine;
using System.Collections;
public class PlayerDodge : MonoBehaviour {
public float dodgeCD;
public float dodgeTimer;
private Transform playerTransform;
void Start () {
playerTransform = GameObject.FindWithTag("Player").transform;
dodgeTimer = Time.time + dodgeCD;
}
void Update()
{
if (Input.GetButton("Dodge") && Time.time >= dodgeTimer)
{
transform.position = new Vector3(playerTransform.position.x + Input.GetAxis("Horizontal") * 1.0f, 0.0f, playerTransform.position.z + Input.GetAxis("Vertical") * 1.0f);
dodgeTimer = Time.time + dodgeCD;
}
}
}
The issue I'm currently facing is that I get an instantaneous dodge (no wonder, since this code is inspired by the code for Instantiating game objects). Is there a way to make it such that once I dodge, the cooldown timer doesn't get incremented until a full second (or more) has passed?
Comment
Never$$anonymous$$d, solved it myself. Here's the final code:
using UnityEngine;
using System.Collections;
public class PlayerDodge : $$anonymous$$onoBehaviour {
public float dodgeCD;
public float dodgeTimer;
private Transform playerTransform;
bool dodging;
void Start () {
playerTransform = GameObject.FindWithTag("Player").transform;
}
void Update()
{
if (Input.GetButton("Dodge") && dodgeTimer <= 0)
{
dodging = true;
transform.position = new Vector3(playerTransform.position.x + Input.GetAxis("Horizontal") * 1.0f, 0.0f, playerTransform.position.z + Input.GetAxis("Vertical") * 1.0f);
}
if (dodgeTimer >= 0)
{
dodging = false;
dodgeTimer = dodgeTimer - Time.deltaTime;
}
else if (dodgeTimer <= 0)
{
dodgeTimer = 0;
}
if (dodging)
{
StartCoroutine("dodgeCooling");
}
}
IEnumerator dodgeCooling()
{
yield return new WaitForSeconds(0.1f);
dodgeTimer = dodgeCD;
}
}
Inspired by this.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Illuminating a 3D object's edges OnMouseOver (script in c#)? 1 Answer
Flip over an object (smooth transition) 3 Answers
How do i get an ad cooldowner? 0 Answers