Home > Mobile >  Why isn't my cube's velocity changing with rb.velocity = new Vector3(sidewaysForce, 0, 0)
Why isn't my cube's velocity changing with rb.velocity = new Vector3(sidewaysForce, 0, 0)

Time:01-04

I am new to Unity so forgive me if I just did a stupid mistake. I am currently watching a tutorial from Brackeys, but I wanted to challenge myself by figuring out the movement myself. I got the moving forward correct, but I couldn't do the sideways movement. Since I've been spending a long time on the sideways movement, I just decided to watch the tutorial, but even when I used their code, it still didn't work. Can someone tell me why this isn't working? (FYI, in the code below, I did set all the public variables to some type of value).

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sides : MonoBehaviour
{
    public KeyCode left;
    public KeyCode right;

    public float sidewaysForce;

    Rigidbody rb;
    Vector3 v3;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        if (Input.GetKey(left))
        {
            Debug.Log("Left");
            rb.velocity = new Vector3(-sidewaysForce, 0, 0);
        }
        if (Input.GetKey(right))
        {
            Debug.Log("Right");
            rb.velocity = new Vector3(sidewaysForce, 0, 0);
        }
    }
}

CodePudding user response:

try left and right between quotation marks:

    if (Input.GetKey("left"))
    {
        Debug.Log("Left");
        rb.velocity = new Vector3(-sidewaysForce, 0, 0);
    }
    if (Input.GetKey("right"))
    {
        Debug.Log("Right");
        rb.velocity = new Vector3(sidewaysForce, 0, 0);
    }

You can check how to get the different keys in: InputManager is in: Edit -> ProjectSettings -> Input

Other option is to use KeyCodes, which I prefer instead of the string argument for the intellisense benefits:

  Update()
  {
  if ( Input.GetKey(KeyCode.UpArrow) )
    //move up
  if ( Input.GetKey(KeyCode.DownArrow) )
    //move down
  if ( Input.GetKey(KeyCode.RightArrow) )
    //move right
  if ( Input.GetKey(KeyCode.LeftArrow) )
    //move left
  }

CodePudding user response:

If you're not getting the logs you added in the console, then you may have forgotten either:

  1. To set the values of variables left and right in the inspector.
  2. To add the Sides component to your GameObject.
  •  Tags:  
  • Related