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

Project1

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

[已经过期] 请教如何让精灵支持rotate方法?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
跳转到指定楼层
1
发表于 2018-3-25 11:41:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 文雅夕露 于 2018-3-25 12:33 编辑

自己摸索了许多还是没明白呢...
我是仿Game_Picture里的脚本进行仿写。
但是效果就是实现不了。调用不起来。
RUBY 代码复制
  1. class Sprite
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对象
  4.   #--------------------------------------------------------------------------
  5.   alias angle_initialize initialize
  6.    def initialize(viewport = nil)
  7.    angle_initialize
  8.    init_rotate
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 初始化旋转角度和速度
  12.   #--------------------------------------------------------------------------
  13.   def init_rotate
  14.     self.angle = 0
  15.     @rotate_speed = 0
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 更改旋转速度
  19.   #--------------------------------------------------------------------------
  20.   def rotate(speed)
  21.     @rotate_speed = speed
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 更新旋转
  25.   #--------------------------------------------------------------------------
  26.   def update_rotate
  27.     return if @rotate_speed == 0
  28.     self.angle += @rotate_speed / 2.0
  29.     self.angle += 360 while self.angle < 0
  30.     self.angle %= 360
  31.   end
  32. end
  33.  
  34. class Scene_Anglepictrue < Scene_MenuBase
  35.   #--------------------------------------------------------------------------
  36.   # ● 初始化对像
  37.   #--------------------------------------------------------------------------
  38.   def initialize
  39.    @speed = 0
  40.    @last_time = 750
  41. end
  42.   #--------------------------------------------------------------------------
  43.   # ● 开始处理
  44.   #--------------------------------------------------------------------------
  45.   def start
  46.   super
  47.   #生成各种图像精灵#
  48.   @anglepictrue = Sprite.new
  49.   @anglepictrue.bitmap = Cache.picture("转盘")
  50.   @anglepictrue.x = 272
  51.   @anglepictrue.y = 208
  52.   @anglepictrue.z = 99
  53.   @anglepictrue.ox = @anglepictrue.bitmap.width / 2
  54.   @anglepictrue.oy = @anglepictrue.bitmap.height / 2
  55.   @cut = Sprite.new
  56.   @cut.bitmap = Cache.picture("转盘指针")
  57.   @cut.z = 999
  58.   @cut.x = 272
  59.   @cut.y = 208
  60.   @cut.ox = @cut.bitmap.width / 2
  61.   @cut.oy = @cut.bitmap.height / 2
  62. end
  63.   #--------------------------------------------------------------------------
  64.   # ●刷新
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     super
  68.     anglepic
  69.     #@cut.rotate(@speed)
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ●旋转过程
  73.   #--------------------------------------------------------------------------
  74.   def anglepic
  75.     loop do
  76.       @cut.rotate(@speed)
  77.       @speed -= 1 if @speed > -50 && @last_time > 0
  78.       @speed += 1 if @speed < 0 && @last_time == 0 && ![0,90,180,270].include?(@cut.angle.round)
  79.       @last_time = 0 if Input.press?(:C) && @speed == -50
  80.       if @speed == 0
  81.         break
  82.       end
  83.     end
  84.     go_event
  85.     dispose_pictrue
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ●执行公共事件
  89.   #--------------------------------------------------------------------------
  90. def go_event
  91.     case @cut.angle.round
  92.     when 1..89
  93.     $game_temp.common_event_id = 31
  94.     when 91..179
  95.     $game_temp.common_event_id = 32
  96.     when 181..269
  97.     $game_temp.common_event_id = 33
  98.     when 271..359
  99.     $game_temp.common_event_id = 34
  100.   end
  101. end
  102.   #--------------------------------------------------------------------------
  103.   # ●消除图片
  104.   #--------------------------------------------------------------------------
  105.   def dispose_pictrue
  106.   @anglepictrue.dispose
  107.   @cut.dispose
  108.   end
  109. end


请教该怎么编写才是正确的呢?
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2018-3-25 12:11:18 | 只看该作者
@Angle –> self.angle
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
3
 楼主| 发表于 2018-3-25 12:35:17 | 只看该作者

谢谢喵前辈的回答。
嗯...已经按照您的提示修改了。
但在脚本里调用不起来,不知是脚本逻辑出了什么问题...
已经更新了主楼的脚本内容。
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2018-3-25 14:47:29 | 只看该作者
文雅夕露 发表于 2018-3-25 12:35
谢谢喵前辈的回答。
嗯...已经按照您的提示修改了。
但在脚本里调用不起来,不知是脚本逻辑出了什么问题. ...

loop do 的用途是什么?

点评

让精灵图像旋转的循环,旋转速度根据判断执行。按C键让精灵图像停止旋转。  发表于 2018-3-25 14:50
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4598
在线时间
1206 小时
注册时间
2016-4-7
帖子
982

开拓者

5
发表于 2018-3-25 16:07:30 | 只看该作者
游戏一般是有自己的主循环的【每个类里的update函数就是
你自己写loop这种只会阻塞游戏自己的主循环
附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

6
发表于 2018-3-25 16:47:16 | 只看该作者
喵呜喵5 发表于 2018-3-25 14:47
loop do 的用途是什么?

先不要考虑图像旋转了,你先试着写写图像从屏幕左上角移动到右下角再从右下角移动回左下角试试吧
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
7
 楼主| 发表于 2018-3-25 18:26:37 | 只看该作者
自行摸索出结果了。已经实现相应的效果,感谢前辈的指导。
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 07:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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