Hi. Anyone how to fix this? When I press the ‘W’ key the character will walk but my character goes up a little. As you can on the screenshot, the character is not on the terrain’s ground. How can I place the character on the ground?
So far, this code I used:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class CharacterMovement : MonoBehaviour {
public Transform playerCam, character, centerPoint;
private float mouseX, mouseY;
public float mouseSensitivity = 10f;
public float mouseYPosition = 1f;
private float moveFB, moveLR;
public float moveSpeed = 2f;
private float zoom;
public float zoomSpeed = 2;
public float zoomMin = -2f;
public float zoomMax = -30f;
public float rotationSpeed = 5f;
void Start() {
zoom = -30;
}
void Update() {
zoom += Input.GetAxis("Mouse ScrollWheel") * zoomSpeed;
if(zoom > zoomMin) {
zoom = zoomMin;
}
if(zoom < zoomMax) {
zoom = zoomMax;
}
playerCam.transform.localPosition = new Vector3 (0, 3, zoom);
if(Input.GetMouseButton(1)) {
mouseX += Input.GetAxis("Mouse X") * mouseSensitivity;
mouseY -= Input.GetAxis("Mouse Y") * mouseSensitivity;
}
mouseY = Mathf.Clamp(mouseY, -60f, 60f);
playerCam.LookAt(centerPoint);
centerPoint.localRotation = Quaternion.Euler(mouseY, mouseX, 0);
moveFB = Input.GetAxis("Vertical") * moveSpeed;
moveLR = Input.GetAxis("Horizontal") * moveSpeed;
Vector3 movement = new Vector3(moveLR, 0, moveFB);
movement = character.rotation * movement;
character.GetComponent<CharacterController> ().Move(movement * Time.deltaTime);
centerPoint.position = new Vector3(character.position.x, character.position.y + mouseYPosition, character.position.z);
if (Input.GetAxis ("Vertical") > 0 | Input.GetAxis ("Vertical") < 0) {
Quaternion turnAngle = Quaternion.Euler (0, centerPoint.eulerAngles.y, 0);
character.rotation = Quaternion.Slerp (character.rotation, turnAngle, Time.deltaTime * rotationSpeed);
}
}
}