I have a player movement controller script and a dash script. The movement controller turns on the dash script whenever space is pressed but for some reason it only works once. It won't let me do it a second time. Can anyone tell me why?
Here's the movement controller:
#pragma strict
var originalMoveSpeed : float;
var moveSpeed : float;
var dashSpeed : float;
var clampRadius : float;
var walkSpeed : float;
var isDashing : boolean;
var rb2D : Rigidbody2D;
var movement : Vector2;
var playerObject : GameObject;
function Update () {
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
}
function FixedUpdate () {
//normalize movement
if (movement.magnitude > 1) {
movement = movement.normalized;
}
//move
rb2D.MovePosition(rb2D.position + movement * moveSpeed * Time.fixedDeltaTime);
movement = Vector3.ClampMagnitude(movement, clampRadius);
//dash
if(Input.GetKeyDown(KeyCode.Space) && playerObject.GetComponent(playerDash).enabled == false) {
playerObject.GetComponent(playerDash).enabled = true;
}
//walk
if(Input.GetKey(KeyCode.LeftShift) == true && !Input.GetKeyDown(KeyCode.Space) == true) {
moveSpeed = walkSpeed;
}
else {
moveSpeed = originalMoveSpeed;
}
}
Here's the dash script:
#pragma strict
var dashSpeed : float;
var dashTime : float;
var isDashing : boolean;
var playerObject : GameObject;
function Start () {
isDashing = true;
playerObject = GameObject.Find("player");
yield WaitForSeconds(dashTime);
isDashing = false;
}
function Update () {
if(isDashing == true) {
playerObject.GetComponent(playerMovement).moveSpeed = dashSpeed;
}
else {
playerObject.GetComponent(playerMovement).moveSpeed = playerObject.GetComponent(playerMovement).originalMoveSpeed;
playerObject.GetComponent(playerDash).enabled = false;
}
}
↧