有没有办法让三角形旋转以面对圆圈上的鼠标?

Is there a way to get a triangle to rotate to face the mouse on a circle?

提问人:Drew Magro 提问时间:10/25/2023 更新时间:10/26/2023 访问量:45

问:

我正在尝试使一个三角形,其两个基点始终保持在圆的外边缘,将指向鼠标所在的位置。我确信这主要是我遗漏的一个特定的数学问题,但我无法弄清楚。重申一下,我正在尝试制作一些类似于 .io 游戏的东西,其中玩家显示为一个圆圈,一个箭头从圆圈上伸出,始终指向鼠标所在的方向。

由于 scratch 使用三点系统来绘制三角形,因此我一直在尝试找到一个公式,该公式将使用圆的周长和变量 mouseX 和 mouseY 来找到三角形的底部两个点,无论鼠标在屏幕上的哪个位置。正因为如此,我一直在使用这个公式:

mouseXRelative = mouseY-(mouseX-(x+25));
mouseYRelative = mouseX-(mouseY-(y+25));
cEdgeXL = x + 25 * cos(mouseXRelative*radians(1));
cEdgeYL = y + 25 * sin(mouseYRelative*radians(1));
cEdgeXR = x - 25 * cos(mouseXRelative*radians(1));
cEdgeYR = y - 25 * sin(mouseYRelative*radians(1));
  
stroke(0,0,0);
triangle(cEdgeXL,cEdgeYL,mouseX,mouseY,cEdgeXR,cEdgeYR);

MouseXRelative 和 mouseYRelative 用于保持相对于三角形端点的距离。

我已经让它非常接近我想要的,但是我发现的主要错误是这些点几乎会绕着圆的边缘旋转?看起来真的很奇怪。

处理 mit-scratch 三角形

评论


答:

2赞 Vlad Feinstein 10/25/2023 #1

你是不是过度设计了?

如果你在“圆形”精灵上画这个三角形,你可以指示它指向鼠标。

请看我在 Scratch 上的演示

以下是精灵服装的示例:sprite

下面是旋转精灵的代码:code

评论

0赞 Vlad Feinstein 10/26/2023
@Rabbid76我以为答案是:,但我现在添加了更多细节。instruct it to point to the mouse
0赞 Justin Neugebauer 11/30/2023 #2

就像弗拉德所暗示的那样,你实际上是在过度设计它,尽管我认为他没有抓住你最初的需求。在我看来,您正在寻找围绕中心玩家旋转的三角形,您似乎尝试使用钢笔工具使三角形出现在每一帧中并与鼠标相对应地移动。下面我来讨论一下笔与精灵的优缺点,以便更好地理解如何解决这个问题;

优点

  • 笔可以快速有效地用于高克隆工作。
  • Pen 可以通过 301 的克隆限制,成为 3D 设计中的有用工具。
  • 笔可以有各种大小和形状,具体取决于您绘制的内容,并且永远不会降低图像质量。
  • 触控笔可以一次擦除所有实例。

缺点

  • 笔真的很难编程。
  • 笔变得资源密集型。
  • 笔不能在特定图层中绘制。
  • 笔不能超过绘图区域。
  • 笔无法擦除单独的实例。
  • 笔在“x”:“y”线的上下文中跟随服装是不可靠的。

您需要一个跟随光标的钢笔三角形,同时保持圆周旋转。仅从上下文来看,这将很难编程。圆周运动对任何物体来说都是一个复杂的约束,让它同时指向某个地方更是如此。实际上,简单的三角形服装会更有效率。通过首先偏移中的三角形,您已经可以获得复杂的圆形约束,但指向鼠标方向会干扰移动。因此,相反,制作一个小圆圈并将其设置为完全透明,在编辑器中从中心点偏移。现在,您有一个围绕玩家中心旋转的圆圈。现在制作三角形并使其跟随圆圈,同时让它指向鼠标。这应该为您提供 2 套服装和 2 个剧本中您正在寻找的东西。