首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二维碰撞侧行为怪异的检测

二维碰撞侧行为怪异的检测
EN

Stack Overflow用户
提问于 2020-08-15 13:02:17
回答 1查看 192关注 0票数 0

我正在制作一个基本的突破游戏,并使用以下代码来检测胶囊对撞机2d和圆环对撞机2d之间的碰撞是否发生在顶部:

代码语言:javascript
复制
bool FindIfTopCol(Collision2D other)
{
    print("collider.y " + collidersize.y / 2);
    ContactPoint2D[] contacts = other.contacts;
    if (contacts[0].point.y - transform.position.y > collidersize.y / 2)
    {
        print("top " + (contacts[0].point.y - transform.position.y));
        return true;
    }
    else
    {
        print("not top " + (contacts[0].point.y - transform.position.y));
        return false;
    }
}

在大多数情况下,检测工作良好,但在运行了一段时间后,特别是在圆环对撞机进入非顶碰撞后,该方法似乎将所有碰撞作为非顶碰撞返回。

为了找出我放置的打印语句的问题,结果是:

对撞机0.2610874前0.2885695

碰撞0.2610874非顶0.2552783 首次实际非顶碰撞

对撞机0.2610874不是顶0.2542975 这是顶碰撞,但显示为非顶

对撞机0.2610874不是顶0.2558844 它的顶碰撞,但显示为非顶

剩下的碰撞也是这样的,直到我重新开始游戏。

我不知道这里出了什么问题。

另外,如果有更好的方法来检测碰撞侧,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2020-08-15 17:03:40

我不太清楚这里发生了什么,但是我会使用OnCollisionEnter2D()事件来检测碰撞。然后比较接触点与对撞机中心,以确定它击中的表面。下面是来自卡西耶普的一个例子。

代码语言:javascript
复制
Vector3 contactPoint = collision.contacts[0].point;
Vector3 center = collider.bounds.center;

bool right = contactPoint.x > center.x;
bool top = contactPoint.y > center.y;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63426344

复制
相关文章

相似问题

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