Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity从内部获得到碰撞R2D边缘的距离_Unity3d_Unity3d 2dtools - Fatal编程技术网

Unity3d Unity从内部获得到碰撞R2D边缘的距离

Unity3d Unity从内部获得到碰撞R2D边缘的距离,unity3d,unity3d-2dtools,Unity3d,Unity3d 2dtools,我有一个,在一个较大的静止碰撞R2d内移动,我想得到从较小碰撞R2d的中心到较大碰撞R2d边缘的距离,沿着碰撞R2d移动的方向 我的第一个想法是使用一种方法,例如: 但是很明显,距离总是0,因为它们已经相交了 有没有办法做到这一点 编辑:这是一张所要求的图表 两个圆都是碰撞的R2D对象,箭头是较小的一个移动的方向,红色的x是我想要找到的点(因此我可以确定距离)。与其尝试检查碰撞,不如用数学方法进行检查 如果知道圆的半径/位置、较小碰撞R2D的位置及其运动矢量,则可以求解该运动矢量与圆相交的位置

我有一个,在一个较大的静止碰撞R2d内移动,我想得到从较小碰撞R2d的中心到较大碰撞R2d边缘的距离,沿着碰撞R2d移动的方向

我的第一个想法是使用一种方法,例如:

但是很明显,距离总是0,因为它们已经相交了

有没有办法做到这一点

编辑:这是一张所要求的图表


两个圆都是碰撞的R2D对象,箭头是较小的一个移动的方向,红色的x是我想要找到的点(因此我可以确定距离)。

与其尝试检查碰撞,不如用数学方法进行检查

如果知道圆的半径/位置、较小碰撞R2D的位置及其运动矢量,则可以求解该运动矢量与圆相交的位置

下面是如何从数学上计算出来的:


如果仍要进行光线投射,另一种方法是沿较小对象的运动向量从一个点投射光线,距离大于较大圆的直径。然后,该光线将投射到较小的对象。基本上,您是从圆外部而不是圆内部投射光线。

使用碰撞器的边界。。。图表或屏幕截图会非常有用,当你说一个碰撞器在另一个碰撞器内部时,我不确定你到底在描述什么。好主意Savlon但是边界表示一个轴对齐的边界框,而外部碰撞的R2D是一个圆。我已经通过编写自己的光线圆相交测试来做到这一点,但我仍然有兴趣知道,是否有一种方法可以做到团结一致。
Physics2D.Raycast(this.transform.position, 
                  this.rigidbody2D.velocity.normalized).distance;