CONTEXT
我正在制作一个统一游戏,我需要测试我的玩家是否在地面上,对于任何熟悉“OnCollisionEnter”之类的东西,他们都无法使用制作游戏功能的方式, ,“OnControllerColliderHit”有效,但没有负面/退出。
我想要做的是在函数运行时有一个布尔值等于true,并且一旦函数停止被调用(播放器不在地面上),这个布尔值将变为false。
随意询问您是否需要任何其他信息,或者(如果您在统一方面的知识)找到关于“OnCollisionEnter”的不同解决方案。
谢谢!
答案 0 :(得分:1)
如果您的问题是检查角色是否在地面上,您可以从角色到地面raycast
,我们会为不均匀添加余量
您应该更改此值并找到最适合您的值的平台
地面
float distanceToGround;
float margin;
void Start(){
// get the distance to ground
distanceToGround = collider.bounds.extents.y;
}
boolean IsGrounded() {
return Physics.Raycast(transform.position, -Vector3.up, distanceToGround + margin);
}
void Update () {
if (IsGrounded()){
//DoSomething
}
}
如果你的角色附加了character controller
组件(因为你正在使用OnControllerColliderHit
所以它肯定是附加的)你可以简单地检查这样的接地
void Start(){
CharacterController controller = GetComponent<CharacterController>();
}
void Update() {
if (controller.isGrounded)
//DoSomething
}