- Home /
Other
error CS0019: trying to increase velocity when key is pressed twice in quick succession
Hello there,
In my game when the user presses the d key in quick succession I want the speed of the player to increase and it to change animation.
However I get this error: Assets/Scripts/PlayerController.cs(29,26): error CS0019: Operator &&' cannot be applied to operands of type
float' and `bool'
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float maxSpeed = 0.5f;
public float sprintSpeed = 2f;
bool facingRight = true;
Animator anim;
Rigidbody2D rb;
bool buttonPressed = false;
float buttonDelay = 0.5f;
void Start()
{
anim = GetComponent<Animator>();
rb = GetComponent<Rigidbody2D> ();
}
void FixedUpdate()
{
float move = Input.GetAxisRaw ("Horizontal"); //how much we are moving
anim.SetFloat ("Speed", Mathf.Abs (move));
rb.velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
buttonPressed = true;
if(Input.GetAxisRaw ("Horizontal") && buttonPressed = true)
{
anim.SetBool("isRunning",true);
rb.velocity = new Vector2 (move * sprintSpeed, GetComponent<Rigidbody2D>().velocity.y);
}
if (move > 0 && !facingRight) //if moving left and not facing left
Flip (); //flip
else if (move < 0 && facingRight) //if moving to the right and not facing right
Flip (); //flip
}
void Flip()
{
facingRight = ! facingRight; // flips the character
Vector3 theScale = transform.localScale; //flips the local scale
theScale.x *= -1; //flip the x axis
transform.localScale = theScale; //apply all of this back to the local scale
}
}
What I would do is have a timer that counts down every time the key is pressed and if that timer is > 0, add force/set velocity to the object. Then you'd just have to reset the timer accordingly. Just a thought. Your way feels more complicated than it needs to be imo.
Answer by RLin · Jul 23, 2015 at 08:15 PM
buttonPressed = true needs to be changed to buttonPressed == true. The single equals is changing a value, which should not be done in an if statement. The double equals is comparing them. In addition, you could completely leave out the "== true" and just have buttonPressed, because it is a bool.
Follow this Question
Related Questions
Getting animations to play relative to player's direction? 4 Answers
How To Lock Direction While Jumping? 1 Answer
How can I add Animation to this player movement script? or do I have to create a totally new one? 0 Answers
How to get 'real' velocity of an object and not the input velocity? 2 Answers
Stopping an object immediately 1 Answer