繁体   English   中英

C#Unity 2D Player通过Box Collider

[英]C# Unity 2D Player Goes through Box Collider

ve got a problem with a player it has RigidBody2D,Box Collider2D i我搜索了2天,但没有结果使用过DontGoThroughThings,还有很多其他事情,或者做错了什么。 我制作了一款手机游戏,并添加了一个Input.touches脚本

foreach (Touch touch in Input.touches)
            {
                Vector3 newPosition = transform.position;
                newPosition.y += touch.deltaPosition.y * speed * Time.deltaTime;
                transform.position = newPosition;
            }

当我将手指移到快速的物体上时,它就直奔镜头视野,并且他没有与对撞机碰撞

对不起,英语不好,谢谢您的建议。如果需要更多信息,我将提供详细信息。

可能的问题是您的对象在帧之间移动得如此之快,以至于它完全错过了对撞机。 您应该限制对象可以达到某个合理范围的最大速度,而不是直接使用touch.deltaPosition.y 像这样:

foreach (Touch touch in Input.touches)
{
    Vector3 newPosition = transform.position;
    newPosition.y += Mathf.Clamp(touch.deltaPosition.y * speed, MIN_SPEED, MAX_SPEED) * Time.deltaTime;
    transform.position = newPosition;
}

这是离散物理模拟中的一个常见问题。

如果站点死机,请从此链接复制/粘贴:

这种现象称为“隧道效应”。 当对象移动得如此之快以至于新的更新位置不会与它所朝向的对象相交时,就会出现隧道。

这实际上与规模有关。 只有在对象移动得足够快时,才能发生隧道效应,以便它可以在模拟的时间范围内移动另一个对象的最短宽度的整个长度。

有一些物理仿真库可以执行连续碰撞检测(CCD),它可以确定两个物体是否在仿真框中的任何点发生碰撞。 通常,这是通过创建一个新的碰撞形状来实现的,该碰撞形状的体积包含运动对象在整个时间范围内占据的所有空间。 然后,它试图找出运动体积与其他对象的交集,然后看得更近,以查看两个对象是否同时存在于其碰撞体积的交集处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM