当前位置: 首页 > 知识库问答 >
问题:

确定角度(从中心)指向哪个java 2d矩形边(顶部/左侧等)

萧晓博
2023-03-14

我在游戏地图上有两个矩形(称之为A和B),我已经计算了从B中心到A的角度。我有生成第三个(C)并从B到A“射击”它的代码。问题是在我的游戏中,这些游戏元素中的两个不应该重叠(它们通常有碰撞代码),所以“射击”代码停止了——在顶部生成C在逻辑上不起作用。

我的解决方案(告诉我是否有更好的方法)是在父对象的边缘旁边生成第三个矩形-但为了让UI正常工作,它需要始终从面向矩形a的父对象的边缘生成。

我知道矩形B的中心坐标,我知道从B到A的角度(可以是弧度或度数),如何确定角度将指向哪一侧(左、上、右、下)?

共有3个答案

滕祯
2023-03-14

假设是从B的中心到A的中心的角度,以间隔-pi... pi中的弧度给出,那么下面应该做你想要的(请记住,就像@Jared建议的那样,正角度是向下而不是向上):

double halfPi = Math.PI/2;
double theta = Math.atan2(B.height, B.width);
if (angle >= theta+halfPi || angle <= -theta-halfPi) {
    // left side
} else if (angle >= theta) {
    // bottom side
} else if (angle >= -theta) {
    // right side
} else {
    // top side
}
贺海
2023-03-14

当我用这样的碰撞引擎编写游戏,并需要弹丸发射行为时,我采取了几种不同的方法。

首先,我保留了对发射弹丸的实体的引用。然后在碰撞检测方法中,我与这个参考进行了比较。

另一种可能更可取的选择是将实体与“派系”联系起来。这可以建模为枚举。然后可以检查碰撞检测代码,以确保两个实体不在同一阵营中。您还可以使用映射来确定哪些派系相互冲突。例如,你可以有“敌对”、“中立”和“玩家”派系,并且让玩家派系实体不与中立等发生冲突。这取决于你游戏的“商业规则”。

如果你这样做,你可以在任何你想要的地方生成投射物。

鲜于子琪
2023-03-14

假设正方形位于单位圆上,其中心位于原点。然后找出Java的行为是否像JavaScript,这与标准三角测量法相反。(pi/2在JS中是直线下降的,而在标准trig中是直线上升的)。矩形对象也有边界和相交方法,这可能会有所帮助。

本页下方的图形可能有助于:http://en.wikipedia.org/wiki/Unit_circle

 类似资料:
  • 根据坐标系,如果只给定矩形的中心坐标以及宽度和高度,您将如何确定矩形的左上角坐标? 例如,矩形的中心坐标是(40,40),矩形的宽度为90,高度为60。

  • 我的问题是:如何确定已拆分的旋转矩形几何体的和是拆分该几何体的任意的“左”和“右”边? 对于这个问题,"左"和"右"被定义为从节点到节点"行走"时,按顺序的拆分器的左边和右边。 我创建了此函数,用于将任意几何体(非集合)拆分为两个面——“左”和“右”: 上面的想法在此处链接的笔记本中进行了说明(与上面的链接相同): http://nbviewer.jupyter.org/urls/dl.dropb

  • 问题内容: 情况1: 我想在默认WordPress主题的标题中的照片上方放置徽标徽标 我的解决方案:在照片前添加徽标,然后在其上 进行 设置, 而无需 设置任何属性: HTML: CSS: 案例2: 另一个示例是水平多级菜单,其宽度为100%,并带有布局,但不支持 它适用于IE6-7,Firefox1.5,不适用于Firefox 0.8等。 您认为这是一个很好的解决方案,还是非标准的破解程序,可以

  • 有人知道一种算法可以用来确定两个矩形重叠的程度和方向吗?我花了好几个小时试图弄清楚这一点,这样我就可以将它实现为一个用slick2d java编写的基本平铺游戏。

  • 当使用dialogFragment时,我在片段顶部得到一个空白矩形,而不知道为什么。 我的对话片段: select_frag.xml

  • 这里有一个关于使用方法关闭一组轴给定侧的刻度的问题。我想更改和属性在默认情况下关闭在我的,但我不知道如何做到这一点,作为文件的刻度部分处理在和方面的东西。我错过了什么?