设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3663|回复: 3
打印 上一主题 下一主题

[RMVX发布] Sprite旋转中心改变

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
跳转到指定楼层
1
 楼主| 发表于 2013-1-30 09:16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
想让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
复制代码
想回复我的话请呼(@)我一下。
准备执行人体盗图计划,copyright的诸君赶紧藏好咧~

Lv1.梦旅人

梦石
0
星屑
60
在线时间
56 小时
注册时间
2012-12-23
帖子
79
2
发表于 2013-2-8 22:47:13 | 只看该作者
这个....
没看懂是什么意思额
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
3
发表于 2013-2-8 23:22:25 | 只看该作者
不过,实际上。
可以移动旋转的中心,
spr.ox = 128
srp.oy=128
这是设置原点的,也就是设置所谓的xy点在图片的什么地方,也就是旋转中心。
鼓励创作。

评分

参与人数 1星屑 +2 收起 理由
Vortur + 2 ...记下了

查看全部评分

精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

骆驼养殖出售 该用户已被删除
4
发表于 2013-2-9 09:07:40 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 16:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表