Project1

标题: 鼠标动画问题 [打印本页]

作者: aa50211040    时间: 2009-8-7 01:03
标题: 鼠标动画问题
我用的是完整鼠标系统(四方向)这个脚本

我想做的是鼠标点击地面都,在地面上留下一个动画效果。(可我做完后动画缺显示在角色身上)

如何编写脚本在鼠标点击的坐标位置显示动画呢 ?
作者: 「旅」    时间: 2009-8-7 16:30
  1. $动画编号 = 1
  2. module Mouse
  3.   def self.init(sprite = nil)
  4.     $ShowCursor.call(0)
  5.     @show_cursor = false
  6.     @mouse_sprite = RPG::Sprite.new
  7.     @mouse_sprite.z = 99999
  8.     @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/mouse.png')
  9.     @left_press = false
  10.     @right_press = false
  11.     @left_trigger = false
  12.     @right_trigger = false
  13.     @left_repeat = false
  14.     @right_repeat = false
  15.     @click_lock = false
  16.     update
  17.   end
  18.   
  19.   def self.update
  20.     left_down = $GetKeyState.call(0x01)
  21.     right_down = $GetKeyState.call(0x02)
  22.     if Mouse.trigger?(Mouse::LEFT) and $scene.is_a?(Scene_Map)
  23.     $data_animations = load_data("Data/Animations.rxdata") if $data_animations==nil
  24.     @mouse_sprite.animation($data_animations[$动画编号],true)
  25.     end
  26.     @mouse_sprite.update
  27.     @click_lock = false
  28.     mouse_x, mouse_y = self.get_mouse_pos
  29.     if @mouse_sprite != nil
  30.       @mouse_sprite.x = mouse_x
  31.       @mouse_sprite.y = mouse_y
  32.     end
  33.     if left_down[7] == 1
  34.       @left_repeat = (not @left_repeat)
  35.       @left_trigger = (not @left_press)
  36.       @left_press = true
  37.     else
  38.       @left_press = false
  39.       @left_trigger = false
  40.       @left_repeat = false
  41.     end
  42.     if right_down[7] == 1
  43.       @right_repeat = (not @right_repeat)
  44.       @right_trigger = (not @right_press)
  45.       @right_press = true
  46.     else
  47.       @right_press = false
  48.       @right_trigger = false
  49.       @right_repeat = false
  50.     end
  51.   end
  52. end
  53. Mouse.init
  54. END { Mouse.exit }
复制代码
保留原来的鼠标脚本,这个脚本放它的下面。
作者: 奶油Da蛋糕    时间: 2009-8-7 17:58
$动画编号 = 1
module Mouse
  def self.init(sprite = nil)
    $ShowCursor.call(0)
    @show_cursor = false
    @mouse_sprite = RPG::Sprite.new
    @mouse_sprite.z = 99999
    @mouse_sprite.bitmap = Bit ...
「旅」 发表于 2009-8-7 16:30


def self.init(sprite = nil)
这个里面的定义和我的脚本里面是一样的,这里没改。
if Mouse.trigger?(Mouse::LEFT) and $scene.is_a?(Scene_Map)

    $data_animations = load_data("Data/Animations.rxdata") if $data_animations==nil

    @mouse_sprite.animation($data_animations[$动画编号],true)

    end
只有def self.update多了这段。还多了@mouse_sprite.update    @click_lock = false这两句。
于是把这两句加上了
$动画编号改为了200

(不能直接覆盖是因为这个跟我的鼠标脚本有差别,我的鼠标还可以判定NPC和宝箱改变鼠标的形状,如果这个改了鼠标的形状就不会随着事件改变了。)

改完之后。
进入游戏。
点击鼠标。。。。




---------------------------
梦想逍遥游
---------------------------
脚本 '(鼠标)完整鼠标系统' 的 201 行 发生了 NoMethodError。

undefined method `animation' for #<Sprite:0x35ffe40>
---------------------------
确定   
---------------------------
作者: IamI    时间: 2009-8-7 18:03
def self.init(sprite = nil)
这个里面的定义和我的脚本里面是一样的,这里没改。
if Mouse.trigger?(Mouse::LEFT) and $scene.is_a?(Scene_Map)

    $data_animations = load_data("Data/Animations.rxdata") if ...
奶油Da蛋糕 发表于 2009-8-7 17:58

Sprite不等于RPG::Sprite,请保留原来的RPG::Sprite而不是Sprite
顺便吐槽句……旅真会偷懒= =
作者: 「旅」    时间: 2009-8-7 23:58
  1. $动画编号 = 1
  2. class << Mouse
  3.   alias lv2_init init
  4.   def init(sprite = nil)
  5.     lv2_init(sprite)
  6.     @mouse_sprite = RPG::Sprite.new
  7.     @mouse_sprite.z = 99999
  8.     @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/001-Weapon01.png')
  9.   end
  10.   alias lv2_update update
  11.   def update
  12.     lv2_update
  13.     if Mouse.trigger?(Mouse::LEFT) and $scene.is_a?(Scene_Map)
  14.     @mouse_sprite.animation($data_animations[$动画编号],true)
  15.     end
  16.     @mouse_sprite.update
  17.   end
  18. end
  19. Mouse.init
  20. END { Mouse.exit }
复制代码
于是换了一个。楼主没必要修改本来的脚本,只要把我这个脚本放在MAIN前,就可以自动更新。
作者: 奶油Da蛋糕    时间: 2009-8-8 15:51
$动画编号 = 1
class
「旅」 发表于 2009-8-7 23:58



如果直接插入到MAIN前面而不是更新到原鼠标脚本中,则在游戏中会出现两个鼠标(原鼠标不能动了)。
并且根据理解来看,这样用的话,鼠标对事件判定的功能也会丢失。
再者,跟全动画战斗脚本貌似有略微冲突。

哎,还是从焚石取暖中自己提取好了。
作者: 「旅」    时间: 2009-8-8 17:09
6# 奶油Da蛋糕
这个脚本是覆盖了原脚本的部分内容,等于更新。不会出现两个、也不会和战斗脚本起冲突。
作者: 空气    时间: 2009-8-8 17:49
哇卡,你们说的都好奥妙
作者: 奶油Da蛋糕    时间: 2009-8-8 19:42
6# 奶油Da蛋糕  
这个脚本是覆盖了原脚本的部分内容,等于更新。不会出现两个、也不会和战斗脚本起冲突。
「旅」 发表于 2009-8-8 17:09


版版测试过了?
确定无误?
那就是我的问题吧。




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