查看: 2613|回复: 7

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

[复制链接]
梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
回帖
1074
发表于 2018-3-25 11:41:53 | 显示全部楼层 |阅读模式

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

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

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

自己摸索了许多还是没明白呢...
我是仿Game_Picture里的脚本进行仿写。
但是效果就是实现不了。调用不起来。
[pre lang="ruby"]class Sprite
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias angle_initialize initialize
   def initialize(viewport = nil)
   angle_initialize
   init_rotate
  end
  #--------------------------------------------------------------------------
  # ● 初始化旋转角度和速度
  #--------------------------------------------------------------------------
  def init_rotate
    self.angle = 0
    @rotate_speed = 0
  end
  #--------------------------------------------------------------------------
  # ● 更改旋转速度
  #--------------------------------------------------------------------------
  def rotate(speed)
    @rotate_speed = speed
  end
  #--------------------------------------------------------------------------
  # ● 更新旋转
  #--------------------------------------------------------------------------
  def update_rotate
    return if @rotate_speed == 0
    self.angle += @rotate_speed / 2.0
    self.angle += 360 while self.angle < 0
    self.angle %= 360
  end
end

class Scene_Anglepictrue < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
   @speed = 0
   @last_time = 750
end
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
  super
  #生成各种图像精灵#
  @anglepictrue = Sprite.new
  @anglepictrue.bitmap = Cache.picture("转盘")
  @anglepictrue.x = 272
  @anglepictrue.y = 208
  @anglepictrue.z = 99
  @anglepictrue.ox = @anglepictrue.bitmap.width / 2
  @anglepictrue.oy = @anglepictrue.bitmap.height / 2
  @cut = Sprite.new
  @cut.bitmap = Cache.picture("转盘指针")
  @cut.z = 999
  @cut.x = 272
  @cut.y = 208
  @cut.ox = @cut.bitmap.width / 2
  @cut.oy = @cut.bitmap.height / 2
end
  #--------------------------------------------------------------------------
  # ●刷新
  #--------------------------------------------------------------------------
  def update
    super
    anglepic
    #@cut.rotate(@speed)
  end
  #--------------------------------------------------------------------------
  # ●旋转过程
  #--------------------------------------------------------------------------
  def anglepic
    loop do
      @cut.rotate(@speed)
      @speed -= 1 if @speed > -50 && @last_time > 0
      @speed += 1 if @speed < 0 && @last_time == 0 && ![0,90,180,270].include?(@cut.angle.round)
      @last_time = 0 if Input.press?(:C) && @speed == -50
      if @speed == 0
        break
      end
    end
    go_event
    dispose_pictrue
  end
  #--------------------------------------------------------------------------
  # ●执行公共事件
  #--------------------------------------------------------------------------
def go_event
    case @cut.angle.round
    when 1..89
    $game_temp.common_event_id = 31
    when 91..179
    $game_temp.common_event_id = 32
    when 181..269
    $game_temp.common_event_id = 33
    when 271..359
    $game_temp.common_event_id = 34
  end
end
  #--------------------------------------------------------------------------
  # ●消除图片
  #--------------------------------------------------------------------------
  def dispose_pictrue
  @anglepictrue.dispose
  @cut.dispose
  end
end
[/pre]

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

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2018-3-25 12:11:18 | 显示全部楼层
@Angle –> self.angle
回复

使用道具 举报

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
回帖
1074
 楼主| 发表于 2018-3-25 12:35:17 | 显示全部楼层

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

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

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

loop do 的用途是什么?

点评

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

使用道具 举报

梦石
0
星屑
4623
在线时间
1207 小时
注册时间
2016-4-7
回帖
944

开拓者

发表于 2018-3-25 16:07:30 | 显示全部楼层
游戏一般是有自己的主循环的【每个类里的update函数就是
你自己写loop这种只会阻塞游戏自己的主循环
附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2018-3-25 16:47:16 | 显示全部楼层
喵呜喵5 发表于 2018-3-25 14:47
loop do 的用途是什么?

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部