using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
public class Movement : MonoBehaviour
{
//storage for the object's rigidbody
public Rigidbody2D rb2D;
//the public modifier for speed so i can edit from outside
public float speed;
//reliably take movements each second in an even, reliable manner.
void FixedUpdate()
{
//i move left and right if i use "a" or "d or "left" or "right"
float moveX = Input.GetAxis("Horizontal");
//I move up and down if i use "w" or "s" or "up" or "down"
float moveY = Input.GetAxis("Vertical");
//Vector inputs the move directions into a vector2 so i can move
Vector2 move = new Vector2(moveX, moveY);
rb2D.velocity = move * speed;
}
//following two methods are for the respective spikey builds
public void slow()
{
print("Shit, spike's got me!");
speed = .3f;
StartCoroutine(PauseTheSlowdown(2.1f));
speed = 1;
}
public void Bigslow()
{
print("HOLY CRAP THAT HURT");
speed = 0f;
StartCoroutine(PauseTheSlowdown(3.7f));
speed = 1;
}
IEnumerator PauseTheSlowdown(float seconds)
{
print("Pause this crap");
yield return new WaitForSecondsRealtime(seconds);
}
}
What am I doing wrong? It all looks like it should run, i’m not getting errors, the code’s going but the coroutine isn’t pausing the the code AT ALL so it instantly jumps from speed impaired to speed normal.
Am I simply misunderstanding coroutines?
slow and Bigslow are being referenced from outside of this script by “traps”