- Home /
Problem with player movements
Hi to everybody and thanks for your help.
I'm creating a 2D scroll game with deepness, ie, the player can moves to left-right and back-fron.
And the question is the next one:
I have modified the script of the official website (http://docs.unity3d.com/Documentation/ScriptReference/CharacterController.Move.html) like this:
using UnityEngine;
using System.Collections;
public class MovimientoJugador : MonoBehaviour {
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.zero;
void Update() {
CharacterController controller = GetComponent<CharacterController>();
if (controller.isGrounded) {
**moveDirection = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0);**
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
}
And the problem is that the player only moves to front, back and left, not right. What can be the reason and what can i do to solve them?
Other thing that i think can be the reason is the input config, but it looks like its good.
If anybody knows other script to do it, please tell me.
Thank you!!!
Regards, Dani.
Answer by hartyo · Dec 05, 2013 at 01:27 PM
Hi Roberty,
No, it don't have a child object. I have also tried with Javascript, but i have the same problem. I can't move de player in the 4 directions, only in 3.
I have used the follow code:
var speed : float = 6.0; var jumpSpeed : float = 8.0; var gravity : float = 20.0; private var moveDirection : Vector3 = Vector3.zero; function Update() { var controller : CharacterController = GetComponent(CharacterController); if (controller.isGrounded) { moveDirection = Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"),0); moveDirection = transform.TransformDirection(moveDirection); moveDirection = speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}*
Watching this problem with 2 lenguages, i think that the problem is in the InputManager, can be it?
Thanks you!