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

Project1

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

[已经解决] 鼠标动画问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
140
在线时间
0 小时
注册时间
2009-8-5
帖子
2
跳转到指定楼层
1
发表于 2009-8-7 01:03:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我用的是完整鼠标系统(四方向)这个脚本

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

如何编写脚本在鼠标点击的坐标位置显示动画呢 ?

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1435
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

2
发表于 2009-8-7 16:30:57 | 只看该作者
  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 }
复制代码
保留原来的鼠标脚本,这个脚本放它的下面。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
3
发表于 2009-8-7 17:58:27 | 只看该作者
$动画编号 = 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>
---------------------------
确定   
---------------------------
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3121
在线时间
1534 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

4
发表于 2009-8-7 18:03:37 | 只看该作者
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
顺便吐槽句……旅真会偷懒= =
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1435
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

5
发表于 2009-8-7 23:58:42 | 只看该作者
  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前,就可以自动更新。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
6
发表于 2009-8-8 15:51:00 | 只看该作者
$动画编号 = 1
class
「旅」 发表于 2009-8-7 23:58



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

哎,还是从焚石取暖中自己提取好了。
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1435
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

7
发表于 2009-8-8 17:09:49 | 只看该作者
6# 奶油Da蛋糕
这个脚本是覆盖了原脚本的部分内容,等于更新。不会出现两个、也不会和战斗脚本起冲突。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
124
在线时间
15 小时
注册时间
2008-1-25
帖子
833
8
发表于 2009-8-8 17:49:58 | 只看该作者
哇卡,你们说的都好奥妙
论坛还活着真是太好了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
9
发表于 2009-8-8 19:42:48 | 只看该作者
6# 奶油Da蛋糕  
这个脚本是覆盖了原脚本的部分内容,等于更新。不会出现两个、也不会和战斗脚本起冲突。
「旅」 发表于 2009-8-8 17:09


版版测试过了?
确定无误?
那就是我的问题吧。
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 22:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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