首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管我没有与OnCollisionEnter2D发生冲突,但它正在被调用为平台执行器。

尽管我没有与OnCollisionEnter2D发生冲突,但它正在被调用为平台执行器。
EN

Stack Overflow用户
提问于 2021-12-06 08:33:44
回答 1查看 336关注 0票数 0

我有一个移动平台脚本。我的平台被冻结了,除非我和它相撞,然后它开始移动。我有一个平台执行器,所以我可以跳下它,而不是击中我的头在它。然而,OnCollisionEnter2D正在被调用,即使我在它下面,并且没有与单向碰撞发生物理冲突。就好像是个扳机。

代码语言:javascript
复制
   private void OnCollisionEnter2D(Collision2D collision)
    {
        
        if (collision.gameObject.GetComponent<Player>())
        {
            Debug.Log("On Collision Enter");
            //CameraFollow.instance.useFixedDeltaTime = false;
            Player = collision.gameObject;
            PlayerScript = Player.GetComponent<Player>();
            amountOfTimesPlayerCollided++;
        }

即使我的头只是接触对撞机区域(没有跳转到平台上),这个方法也会被调用,并且"On冲突输入“被登录到控制台中。如何使OnCollisionEnter2D只在与平台发生物理冲突时才被调用?

谢谢!我正在使用最新版本的Unitation2021,但这在我身上已经发生过,在过去的其他版本中,我非常肯定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 09:28:30

这个回调是当传入对撞机与该物体的对撞机发生接触时发送

我认为“接触”和“触摸”有着相同的含义,所以这是一种预期的行为。

只有当我和平台发生物理碰撞时才会被呼叫?

我想您希望检测到影响,所以当碰撞发生时,您可能也会注意两个对象之间的速度

代码语言:javascript
复制
private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.GetComponent<Player>()
        && collision.relativeVelocity.magnitude > THRESHOLD)
    {
        ......
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70242696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档