Project1

标题: Sprite旋转中心改变 [打印本页]

作者: devilg    时间: 2013-1-30 09:16
标题: Sprite旋转中心改变
想让Sprite旋转很好办,指定.angle =就行了
不过旋转的中心不是图片中心,而是在x,y那个地方!
有的时候非常烦人……
那么怎么样能让sprite在中心旋转呢?

原理:通过三角函数勾股定理各种微积分测算中心移位并调整xy使相对中心保持一致。不要被吓跑,初中生水平
  1. =begin 调整后的Sprite
  2. copyleft DevilG, all wrongs reserved
  3. 调整:将按照(0,0)旋转调整为按中心旋转
  4. 更新x&y使相对中心位置始终相等
  5. 不能再使用x+=newx更新位置了,用xplus来帮助更新相对起始点

  6. 使用:由于是Sprite的子类与Sprite的使用方法一样
  7. 更新位置时使用xplus(increment) 代替.x += increment
  8. =end
  9. class Sprite_Slother < Sprite
  10.   PI = 3.14159265358
  11.   def x=(x)
  12.     if !x.is_a?(Array)
  13.       @originalx = x
  14.       super(x)
  15.     else
  16.       super(x[0].to_i)
  17.     end
  18.    
  19.   end
  20.   
  21.   def centre(x,y)
  22.     @centrex,@centrey = x,y
  23.   end
  24.   
  25.   
  26.   def y=(y)
  27.     if !y.is_a?(Array)
  28.       @originaly = y
  29.       super(y)
  30.     else
  31.       super(y[0].to_i)
  32.     end
  33.   end
  34.   
  35.   def angle=(angle)
  36.     super(angle)  
  37.       centre = Math.atan(src_rect.height * 1.0 / src_rect.width) + angle  * PI / 180
  38.       #this make piggy loop at some centre
  39.       lane = ((src_rect.height ** 2 + src_rect.width ** 2)*1.0)**0.5 / 2
  40.       centre = PI/2 + Math.atan(src_rect.height * 1.0 / src_rect.width) - angle * PI / 180
  41.       #@original
  42.       self.x = [@originalx - (Math.sin(centre) * lane - src_rect.width/2)]
  43.       self.y = [@originaly + (Math.cos(centre) * lane - src_rect.height/2)]# - @originaly / 2)
  44.       #p([self.x+Math.cos(centre) * lane,self.y+Math.sin(centre) * lane])
  45.   end
  46.   
  47.   def xplus(x)
  48.     self.x = [self.x + x]
  49.     @originalx += x
  50.   end
  51.   
  52.   def yplus(y)
  53.     self.y = [self.y + y]
  54.     @originaly += y
  55.   end
  56.   
  57.   
  58. end
  59. #=end
复制代码

作者: denitk    时间: 2013-2-8 22:47
这个....
没看懂是什么意思额
作者: 九夜神尊    时间: 2013-2-8 23:22
不过,实际上。
可以移动旋转的中心,
spr.ox = 128
srp.oy=128
这是设置原点的,也就是设置所谓的xy点在图片的什么地方,也就是旋转中心。
鼓励创作。
作者: 骆驼养殖出售    时间: 2013-2-9 09:07
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1