AutoCAD 3DMAX C言语 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab运用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 主页 > Unity3D

Unity检测发射体VS.防护磕碰

51自学网 2014-05-24 http://www.pvc01.com

本文选自系列文章之一,本系列文章将为读者共享国外最优质的精彩问与答,供读者学习和了解国外最新技能,本文Unity磕碰检测问题。

问题:

我在测验检测,发射体是否要碰击防护体,以及磕碰在哪里发作。

这幅图能够显示出详细的景象,尽管A和B发射体间隔中心防护体中心S的间隔根本相同,可是一个会碰击到防护体,另一个却不会。

用简略的数学来处理它,需求用到圆的数学方程和发射体途径线的方程。只要用一支笔和一张纸,我就能核算出来。可是,我直接解析几何的阅历十分糟糕。此外,发射体将脱离防护体,回来阳极。怎样过滤它们呢?

第二种办法是比较友爱的办法——丈量发射体途径与防护体中心的最短间隔,假如L比R小,就发作磕碰。看上去很简单完成,可是这不能让我知道磕碰在哪里发作。

我做的是二维游戏,运用C#和Unity游戏引擎,欢迎我们提出各种通用处理办法。

发射体的巨细忽略不计。

答复:

你的防护体能够被描绘成:

(X - X1)^2+ (Y - Y1)^2= R^2

发射体的途径线能够描绘为:

Y - Y3 = ((Y4 -Y3) / (X4 - X3)) * (X - X3)

从这儿:

Y = ((Y4 - Y3) / (X4 - X3)) * (X - X3) + Y3

用上述拓宽第一个方程,得到:

(X - X1)^2+ (((Y4 - Y3) / (X4 - X3)) * (X - X3) + Y3 -Y1)^2= R^2

这是一个 ,假如处理则能给出交点的X值。阅览链接中的二次方程处理方案,它将用一个公式取得第一个脉冲来处理问题。当然,假如判别式为负,就没有交点,那么方程式就没有真实的答案。假如判别式是0,那么发射体就会触碰到防护体。假如判别式为正,那你就取得了答案,用方程式的成果退出X。

知道了X的值之后,就能够核算用下面的公式核算Y的值。

Y = ((Y4 - Y3) / (X4 - X3)) * (X - X3) + Y3

最终留意,只要在发射体的途径线不是笔直的才能够起作用,由于那样X4就等于X3,导致根本方程无用。当呈现发射体穿过一条直线的情况下,线的公式为:

X = X1

然后运用公式:

Y = ((Y4 - Y3) / (X4 - X3)) * (X - X3) + Y3

来取得或许的处理方案。(再次声明,这是一个二次元方程)

所以这一履行应该检查发射体的途径线是否笔直,然后根据详细情况挑选相应的处理方案。期望这能帮到你。

原文链接:

 

文章选自社区,鉴于其内容关于开发者有所协助,现将文章翻译于此,供我们参阅及学习。9Tech将每日继续更新,读者可点击,检查悉数译文内容。一起,,谋福我们!


主张运用电驴(eMule)下载共享的资源。

阐明
:本教程来历互联网或网友共享或出版商宣扬共享,仅为学习研讨或媒体推行,pvc01.com不确保材料的完整性。
 
上一篇:Unity 相关经典博客资源总结  下一篇:用Unity3D 开发游戏哪种言语最好?