版本: Unity 6 (6000.0)
语言英语
  • C#

CharacterController.OnControllerColliderHit(ControllerColliderHit)

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读用户提出的每一个建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

描述

当控制器在执行移动时与碰撞器发生碰撞时,将调用 OnControllerColliderHit。

这可用于在物体与角色发生碰撞时推动物体。

using UnityEngine;

public class Example : MonoBehaviour { // this script pushes all rigidbodies that the character touches float pushPower = 2.0f; void OnControllerColliderHit(ControllerColliderHit hit) { Rigidbody body = hit.collider.attachedRigidbody;

// no rigidbody if (body == null || body.isKinematic) { return; }

// We dont want to push objects below us if (hit.moveDirection.y < -0.3) { return; }

// Calculate push direction from move direction, // we only push objects to the sides never up and down Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);

// If you know how fast your character is trying to move, // then you can also multiply the push velocity by that.

// Apply the push body.velocity = pushDir * pushPower; } }