【问题标题】:Rotating a Sprite in Java在 Java 中旋转 Sprite
【发布时间】:2014-06-20 20:49:28
【问题描述】:

在处理Projectiles 时,我认为旋转精灵也是一个好主意,让它看起来更漂亮。

我目前使用的是一维数组,而精灵的宽度和高度可以而且会有所不同,所以我很难弄清楚如何正确地做到这一点.

我会诚实坦率地说:我完全不知道该怎么做。我已经进行了一些搜索以试图找到一些东西,并且有一些东西在那里,但我找到的最好的是:

DreamInCode ~ Rotating a 1-dimensional Array of Pixels

这个方法很好用,但只适用于方形 Sprites。我也想将此应用于非方形(矩形)精灵。我如何设置它以便可以旋转矩形精灵?

目前,我正在尝试制作激光,如果它不只是沿着垂直或水平轴移动,它看起来会更好。

【问题讨论】:

  • 您为什么不使用众多 Java 游戏引擎之一?或者如果你是,是哪一个?为什么要手写精灵旋转代码?
  • 另外,如果你想制作激光,为什么不画一条具有一定线宽的线,而不是画一个精灵?
  • @jefflunt 我目前正在从头开始编写引擎,因为我想更好地掌握,并且我觉得我会获得更多成就,尽管我计划很快进入游戏引擎。同样,我没有画线,因为我正在操作一个数组。
  • 嗯,这是个好主意,我理解,因为我去过那里,但是有更好的方法来实现对事物有很好把握的目标,比如阅读、工作和/或贡献给an existing engine。除非你认为你想以编写基本的图形代码为生,否则这有点像重新发现加法,而不是在数学课上认为它是理所当然的。有一些东西需要学习,是的,但是当你可能更愿意做的是制作游戏时,你有点陷入困境。
  • 我相信您对此的看法是正确的,并感谢您写得很好的回复。我想这会比我想要完成的要好。

标签: java arrays image-rotation


【解决方案1】:

您需要重新计算图像的坐标点 (take a look here)。你必须对你的精灵(x, y) 的每个点做一个矩阵乘积作为旋转矩阵,以获得空间x'y' 中的新点。 您可以假设您的精灵的左下角(或自下而上,取决于您的系统坐标方向)位于(x,y) = (0,0)

你也应该重新计算颜色(因为如果你在(x,y)=(10,5) 有一个纯红色像素被蓝色像素包围,当你旋转它可以移动到例如(x, y)=(8.33, 7.1) 它不是一个真正的像素位置,因为像素没有' t 浮动坐标。所以实际位置(x, y)=(8, 7) 的像素将不再是纯红色,而是带有一小部分蓝色的红色)......但时间是一回事。

【讨论】:

    【解决方案2】:

    这比您想象的要容易:您只需将居中的原始矩形精灵复制为具有透明背景的更大方形精灵。 .png 文件有这个选项,我想你可以使用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多