C#Unity 2D播放器通过Box Collider

时间:2016-06-15 20:06:12

标签: c# unity3d unityscript unity5

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;
            }

它有速度,当我将手指移动到快速物体时直接从相机视图中移出并且他没有与碰撞器发生碰撞

抱歉英语不好 谢谢你的建议 如果需要更多信息,我会提供详细信息。

2 个答案:

答案 0 :(得分:0)

可能问题是你的物体在帧之间移动得如此之快,以至于它完全错过了对撞机。您应该将对象可以达到的最大速度限制在合理的范围内,而不是直接使用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;
}

答案 1 :(得分:0)

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

如果网站死亡,请从此link复制/粘贴:

  

这种现象称为“隧道效应”。隧道出现时   对象进展如此之快,以至于新的更新位置没有   与它正朝向的物体相交。

     

这一切都与规模有关。仅当对象发生隧道时才会发生隧道   移动得足够快,以便它可以移动整个长度   时间量子中另一个物体的最短宽度   模拟。

     

有物理模拟库可以连续执行   碰撞检测(CCD),它将确定两个物体   在模拟框架内的任何位置发生碰撞。通常这是   通过创建具有体积的新碰撞形状来完成   包含移动物体占据整个空间的所有空间   时间量子。然后它试图弄清楚它的交集   移动体积与其他对象,然后看起来更接近看   如果两个物体存在于碰撞的交叉点   同时卷。