Physics.CheckSphere() 不工作 Unity C#

问题描述 投票:0回答:1

所以,我正在开发一款数学足球游戏,我想添加一个守门员,当球与他碰撞时,他会做一个动画,然后接住球(然后它不会给出分数)。但我在使用

Physics.CheckSphere()
命令时遇到了问题。

我的代码:

using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
using UnityEngine.UI;

public class goalieAIController : MonoBehaviour
{
    public Transform goalie;
    public Transform goalieCollider;
    public bool isBallAtGOALIE;
    public LayerMask ballMaskLM;
    public float ballDistance = 10f;

    // Use this for initialization
    void Start () {
        isBallAtGOALIE = false;
    }
    
    // Update is called once per frame
    void Update () {
        isBallAtGOALIE = Physics.CheckSphere(goalieCollider.position, ballDistance, ballMaskLM);

        if (isBallAtGOALIE == true) 
        {
            print("ball collided with goalie!");
        }
    }
}

我尝试获取球的 X 轴和 Z 轴并检查它是否等于守门员的位置。但我想让它检测距离,但效率很低。 (也没有成功)

c# unity-game-engine
1个回答
0
投票

如果您尝试检查某物是否与碰撞体发生碰撞,您应该首先确保其中一个碰撞体具有刚体。其次,您应该使用统一定义的“OnCollisionEnter”和“OnCollisionExit”空隙。并且您应该确保碰撞器组件是在 OnCollisionEnter 和 Exit void 所在的同一脚本中创建的。您可以在此处的文档中找到有关它们的更多信息OnCollisionEnter unity doc

© www.soinside.com 2019 - 2024. All rights reserved.