**
傻瓜们记得使用tx.setToRotation(Math.toRadians(angle)); 当使用李的方法时。
**
我正在制作一个基于单元的游戏,其中每个“生物”都由多个10x10像素的正方形(单元)组成,这些单元必须连接到“主单元”,否则将被移除。主单元格包含一个表示其角度(0-360。)的整数,当主单元格旋转时,它必须将所有连接的单元格与其对齐。波纹管
我已经可以在这个角度上绘制它们,我只需要Cell的getX()和getY()函数即可根据主单元格的旋转返回修改后的X / Y。
给定主像元的角度(int angle),给定像元的偏移量(int xMod,int yMod)和当前位置(int x,int y),您可以为Cell构造一个吸气剂和设定剂,并返回修改为适合的X和Y主单元(所有者)的旋转?
查看AffineTransform类,该类为各种转换(包括旋转)提供了易于使用的方法。然后使用您的(x,y)值构造一个Point2D并应用AffineTransform获得一个新的旋转的Point2D。很好,因为它的用法与您当前用于旋转图形上下文的用法非常相似。
AffineTransform tx = new AffineTransform();
tx.rotate(...);
Point2D point = new Point2D.Double(x, y);
Point2D rotated = new Point2D.Double();
tx.transform(point, rotated);
奖励:您可以将转换同时用于渲染和计算!您可以在Graphics2D对象上应用AffineTransform,以减少相似/重复的代码。
Graphics2D g = ...
g.transform(tx);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句