public CollisionFlags Move (Vector3 motion);

Description

Supplies the movement of a GameObject with an attached CharacterController component.

The CharacterController.Move motion moves the GameObject in the given direction. The given direction requires absolute movement delta values. A collision constrains the Move from taking place. The return, CollisionFlags, indicates the direction of a collision: None, Sides, Above, and Below. CharacterController.Move does not use gravity.

The example below demonstrates how to use CharacterContoller.Move. Update causes a Move to re-position the player. In addition, Jump changes the player position in a vertical direction.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour { private CharacterController controller; private Vector3 playerVelocity; private bool groundedPlayer; private float playerSpeed = 2.0f; private float jumpHeight = 1.0f; private float gravityValue = -9.81f;

private void Start() { controller = gameObject.AddComponent<CharacterController>(); }

void Update() { groundedPlayer = controller.isGrounded; if (groundedPlayer &amp;&amp; playerVelocity.y < 0) { playerVelocity.y = 0f; }

Vector3 move = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); controller.Move(move * Time.deltaTime * playerSpeed);

if (move != Vector3.zero) { gameObject.transform.forward = move; }

// Changes the height position of the player.. if (Input.GetButtonDown("Jump") &amp;&amp; groundedPlayer) { playerVelocity.y += Mathf.Sqrt(jumpHeight * -3.0f * gravityValue); }

playerVelocity.y += gravityValue * Time.deltaTime; controller.Move(playerVelocity * Time.deltaTime); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961