public CollisionFlags Move (Vector3 motion);

描述

采用绝对移动增量的更复杂移动函数。

尝试通过 motion 移动控制器,此运动将仅受碰撞约束。它将沿着碰撞体滑动。CollisionFlags 汇总了此 Move 期间发生的碰撞。该函数未施加任何重力。

using UnityEngine;
using System.Collections;

// The GameObject is made to bounce using the space key. // Also the GameOject can be moved forward/backward and left/right. // Add a Quad to the scene so this GameObject can collider with a floor.

public class ExampleScript : MonoBehaviour { public float speed = 6.0f; public float jumpSpeed = 8.0f; public float gravity = 20.0f;

private Vector3 moveDirection = Vector3.zero; private CharacterController controller;

void Start() { controller = GetComponent<CharacterController>();

// let the gameObject fall down gameObject.transform.position = new Vector3(0, 5, 0); }

void Update() { if (controller.isGrounded) { // We are grounded, so recalculate // move direction directly from axes

moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection); moveDirection = moveDirection * speed;

if (Input.GetButton("Jump")) { moveDirection.y = jumpSpeed; } }

// Apply gravity moveDirection.y = moveDirection.y - (gravity * Time.deltaTime);

// Move the controller controller.Move(moveDirection * Time.deltaTime); } }