xxxxxxxxxx
using UnityEngine;
using System.Collections;
// This script moves the character controller forward
// and sideways based on the arrow keys.
// It also jumps when pressing space.
// Make sure to attach a character controller to the same game object.
// It is recommended that you make only one call to Move or SimpleMove per frame.
public class ExampleClass : MonoBehaviour
{
CharacterController characterController;
public float speed = 6.0f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;
void Start()
{
characterController = GetComponent<CharacterController>();
}
void Update()
{
if (characterController.isGrounded)
{
// We are grounded, so recalculate
// move direction directly from axes
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
moveDirection *= speed;
if (Input.GetButton("Jump"))
{
moveDirection.y = jumpSpeed;
}
}
// Apply gravity. Gravity is multiplied by deltaTime twice (once here, and once below
// when the moveDirection is multiplied by deltaTime). This is because gravity should be applied
// as an acceleration (ms^-2)
moveDirection.y -= gravity * Time.deltaTime;
// Move the controller
characterController.Move(moveDirection * Time.deltaTime);
}
}
This script would move the player:
Up arrow - move forward
Down arrow - move backward
Left arrow key - left
Right arrow key - right
Space bar- jump
xxxxxxxxxx
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
private Rigidbody rb;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
// Check if the player is on the ground
isGrounded = Physics.Raycast(transform.position, Vector3.down, 0.5f);
// Jump if the player presses the space bar and is on the ground
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
// Move the player forward or backward based on input
float verticalInput = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(0, 0, verticalInput);
movement = movement.normalized * moveSpeed * Time.deltaTime;
rb.MovePosition(transform.position + transform.TransformDirection(movement));
// Rotate the player based on horizontal input
float horizontalInput = Input.GetAxis("Horizontal");
transform.Rotate(0, horizontalInput * 5f, 0);
}
}