SimonJN
SimonJN

Reputation: 23

Unity accessing rigidBody component with input system

I have just started a new Unity tut using its input system to move a ball. However, the script doesn't seem to be working when I try to move the ball

enter image description here

Code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem; //Namespace for accessing InputSystem to control ball

public class PlayerController : MonoBehaviour
{
    private Rigidbody rb;
    private float movementX;
    private float movementY;

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

    void Onmove(InputValue movementValue)
    {
        Vector2 movementVector = movementValue.Get<Vector2>();

        movementX = movementVector.x;
        movementY = movementVector.y;
    }

    void FixedUpdate()
    {
        Vector3 movement = new Vector3(movementX, 0.0f, movementY);
        rb.AddForce(movement);
    }
}

Upvotes: 0

Views: 266

Answers (2)

mycky
mycky

Reputation: 688

Create in Unity a new InputControl with the name PlayerInputActions and into Inspector select Generate C# class, Unity autogenerate for you Action Maps , Actions and Binding Property, double click on it to watch, than in a new c# script named NewInputSystem

using UnityEngine;
using UnityEngine.InputSystem;

public class NewInputSystem : MonoBehaviour
{


public Rigidbody rb;
public float moveSpeed = 7.0f;
Vector2 moveDirections = Vector2.zero;

public PlayerInputActions playerControls;

private InputAction move;

private void Awake()
{
    playerControls = new PlayerInputActions();
}

private void OnEnable()
{
    move = playerControls.Player.Move;
    move.Enable();

  }


private void OnDisable()
{
    move.Disable(); 
   

}


void Start()
{
   
    rb =gameObject.GetComponent<Rigidbody>();
   

}

// Update is called once per frame
void Update()
{
    moveDirections = move.ReadValue<Vector2>();
   
}

private void FixedUpdate()
{
//change how you want
    rb.velocity = new Vector3(moveDirections.y * moveSpeed, 0,  moveDirections.x * -moveSpeed);
    
}


}

Upvotes: 0

asd worker
asd worker

Reputation: 101

If you did everything else right and the problem is only in your script then changing from Onmove to OnMove should fix problem

Upvotes: 1

Related Questions