Hello guys,
I am working on “click to move” script to my game and everything in script works except line of code with SimpleMove(). Unity writes no error, it just does not move, even it rotates correctly. And yes, CharacterController is attached to Player gameobject and is assigned in the inspector.
Here is the script:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(CharacterController))]
public class CharacterMovement : MonoBehaviour {
private Vector3 _targetPosition;
public float speed;
public float rotationSpeed;
public Camera mainCamera;
public CharacterController controller;
void Start () {
_targetPosition = transform.position;
speed = 2f;
rotationSpeed = 4f;
}
void Update () {
if(Input.GetKeyDown(KeyCode.Mouse1)) {
Ray _ray;
RaycastHit _hit;
_ray = mainCamera.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(_ray, out _hit, 20) && _hit.collider.tag != "Player") {
_targetPosition = _hit.point;
}
}
if(Vector3.Distance(transform.position, _targetPosition) < 0.1f) _targetPosition = transform.position;
Move();
}
private void Move() {
if(transform.position != _targetPosition) {
Quaternion lookPosition = Quaternion.LookRotation(_targetPosition - transform.position);
lookPosition.x = 0;
lookPosition.z = 0;
transform.rotation = Quaternion.Slerp(transform.rotation, lookPosition, rotationSpeed * Time.deltaTime);
controller.SimpleMove(transform.forward * speed);
}
}
}