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/5/date/2.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'的情况下检查游戏对象和线条渲染器是否发生冲突;s内置的物理库?_Unity3d - Fatal编程技术网

Unity3d 如何在不使用unity'的情况下检查游戏对象和线条渲染器是否发生冲突;s内置的物理库?

Unity3d 如何在不使用unity'的情况下检查游戏对象和线条渲染器是否发生冲突;s内置的物理库?,unity3d,Unity3d,我们有一种方法来检测炮弹是否与直线物体碰撞。基本上,我们有一种方法来获取渲染线中土耳其的所有线。然后我们检查炮弹中心到直线的距离是否小于炮弹的半径 代码如下: 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类:单一行为 { GameObject[]turkeyList=新游戏对象[5]; 配子体火鸡; 公共静态浮动旋转角; 浮动创建时间; 浮动速度=150f; 浮子重力=-200.0f; 公共游戏对象土耳其; 静态int NUM_

我们有一种方法来检测炮弹是否与直线物体碰撞。基本上,我们有一种方法来获取渲染线中土耳其的所有线。然后我们检查炮弹中心到直线的距离是否小于炮弹的半径

代码如下:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类:单一行为
{
GameObject[]turkeyList=新游戏对象[5];
配子体火鸡;
公共静态浮动旋转角;
浮动创建时间;
浮动速度=150f;
浮子重力=-200.0f;
公共游戏对象土耳其;
静态int NUM_粒子数=26;
Vector3[]m_位置=新Vector3[NUM_粒子];
线条渲染器线条渲染器;
void Start()
{
火鸡=游戏对象。查找(“火鸡”);
对于(int i=0;i0.0f)
对于(int i=0;i=0)
{
Vector3 sumOfPoints=新的Vector3();
Vector3 sumofpointsell=新Vector3();
int numberOfPointsAdded=0;
Vector3 centerOfTurkey=新Vector3();
Vector3 centerOfTurkeyOld=新Vector3();
对于(int i=8;im_位置[13].x&&m_加速度[25].x<0)
{
Vector3 sumOfPoints=新的Vector3();
Vector3 sumofpointsell=新Vector3();
int numberOfPointsAdded=0;
Vector3 centerOfTurkey=新Vector3();
Vector3 centerOfTurkeyOld=新Vector3();
对于(int i=8;i如果(m_位置[4].x,你可以检查每个火鸡中心的距离,考虑火鸡+炮弹的半径

vector2ballpos=炮弹.transform.position;
float turkeyRadius=0.5f;//我们假设它有一个圆作为hitbox/collider
浮动炮弹半径=0.1f;//炮弹的半径相同
//我们想要增加的半径平方,因为我们想稍后与sqrMagnitude进行比较。
浮动minDifToCollide=Mathf.Pow(炮弹半径+突厥半径,2);
foreach(所有火鸡中的var turkey){
Vector2 turkeyPos=turkey.GetCenter();
//.sqrMagnitude比.magnitude性能更好,所以我们使用它。
浮动dif=(土耳其波斯-鲍尔波斯).sqrMagnitude;
//检查有无碰撞。

如果(dif)我很好奇你是如何计算两点之间的距离的,从日志来看,这些距离对我来说并不合适。计算距离的简单方法应该是
newvector2(temporaryTurkeyLines[I].x-transform.position.x,temporaryTurkeyLines[I].y-transform.position.y).magnity
。为什么不想使用Unitys内置的物理库?这可以通过itI轻松解决。我无法使用物理库完成此作业。此外,土耳其的坐标不是全局坐标。此外,SlopeAndInIntercept[i]。x是第i条线(绘制土耳其)和SlopeAndInIntercept[i]的斜率.y是第i条线(画火鸡)的y截距.注意:在这种情况下,使用Vector2很重要,因为您不希望Z轴在震级上起任何作用。谢谢,但我使用土耳其线来进行碰撞检测,而不是最小边界圆。另外,如果两个圆的中心之间的距离小于或等于其半径平方和,两个圆是否会碰撞它们的中心距离小于或等于半径之和的平方?