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

Project1

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

如何用脚本设置移动路线

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-9
帖子
5
跳转到指定楼层
1
发表于 2008-5-29 07:44:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
142
在线时间
264 小时
注册时间
2006-11-22
帖子
1057
2
发表于 2008-5-29 07:46:18 | 只看该作者
code代表什麼可以參考Game_Character 2,move_type_custom方法。

m = RPG::MoveRoute.new
m.list[0].code = 1
m.list.push(RPG::MoveCommand.new(1))
m.list.push(RPG::MoveCommand.new(0))
m.repeat = false
$game_map.events[事件编号].force_move_route(m)


最後一定要m.list.push(RPG::MoveCommand.new(0))。
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

3
发表于 2008-5-29 07:49:02 | 只看该作者
以下引用自天干宝典。
不过貌似只能在移动路线的脚本中用……或许不是楼主所要的东西……
首先来诠释一下1=44,就是说在"移动路线"的设置里使用脚本可以实现另外44个按钮的全部功能,脚本写法如下:

1.向下移动: move_down

2.向左移动: move_left

3.向右移动: move_right

4.向上移动: move_up

5.左下移动: move_lower_left

6.左上移动: move_upper_left

7.右下移动: move_lower_right

8.右上移动: move_upper_right

9.随机移动: move_random

10.接近主角: move_toward_player

11.远离主角: move_away_from_player

12.前进一步: move_forward

13.后退一步: move_backward

14.跳跃: jump(x,y)    x是水平跳跃距离,y是垂直跳跃距离,都是相对值,例如 jump(-5,7)

15.等待: @wait_count=f   f是想等待的帧数,注意实际值会按f的一半计算,所以等待2帧要令f=4

16.面向下: turn_down

17.面向左: turn_left

18.面向右: turn_right

19.面向上: turn_up

20.右转90度: turn_right_90

21.左转90度: turn_left_90

22.旋转180度: turn_180

23.右或左转90度: turn_right_or_left_90

24.随机变换: turn_random

25.面向主角: turn_toward_player

26.背向主角: turn_away_from_player

27-28.开关操作:

$game_switches[开关id]=true/false

$game_map.need_refresh=true   注:加这一条是因为在地图上操作,需要刷新事件开关

29.更改移动速度: @move_speed=(1-6),1为最慢,6为最快,事件默认值3,角色默认值4

30.更改移动频率: @move_frequency=(1-6),1为最低,6为最高,事件默认值3,角色默认值6

31-32.移动动画开关: @walk_anime=true/false

33-34.停止动画开关: @step_anime=true/false

35-36.面向固定开关: @direction_fix=true/false

37-38.穿透开关: @through=true/false

39-40.总在最前开关: @always_on_top=true/false

41.更改图形:

@tile_id=0

@character_name=新的行走图文件名

@character_hue=新的行走图色相

@direction=新的朝向 取值2 4 6 8(下 左 右 上)

@pattern=新的步伐 取值0 1 2 3(对应行走图从左到右的4格)

42.更改不透明度: @opacity=(0-255)

43.更改合成方式: @blend_type=(0-2)   0为正常 1为加法 2为减法

44.演奏SE: $game_system.se_play(SE文件名,音量,节拍)   音量0-100默认80,节拍50-150默认100

1=44的意义在于,利用脚本的循环可以很方便的简化移动路线设置,比如有一个路线要让NPC上移11格,然后右移7格,再下移4格

用事件来做,移动路线会长达11+7+4=22条,用脚本来写,则可以:

n=11;n.times do move_up; end

n=7;n.times do move_right; end

n=4;n.times do move_down; end

你想把三条合并都可以……

不过需要注意的是,由于一句脚本是作为一个整体来执行的,并且判定上有别于移动事件,所以它不会受到"忽略不能移动的场合"影响,这意味着你必须确认NPC经过的路线畅通无阻才行。

移动路线脚本的其他用处:

属性类:

自身座标: self.x self.y self.z

自身移动中: self.moving?

自身跳跃中: self.jumping?

自身通行判定: self.passable?(x,y,方向) 方向为2 4 6 8 定义同前

自身地形标记: self.terrain_tag

动作类:

移动到指定地点: moveto(x,y)

更改角色的移动模式:

@move_type=0 更改移动模式为立定

@move_type=1 更改移动模式为随机

@move_type=2 更改移动模式为接近

@move_type=3 更改移动模式为自定义

另外,当移动模式设为自定义时,在移动路线里输入脚本可以仿真前两种移动模式

move_type_random 仿真随机移动

move_type_toward_player 仿真接近移动(我那个3行脚本的NPC视野系统就是利用了这个原理)


移动路线脚本只能写1行,但没有长度限制,所以在允许的范围内可以用分号来写一些较复杂的控制结构比如循环,但没法实现分歧结构

比如:当事件离主角6格时更改移动模式为接近,否则随机

事件的移动类型设为自定义

移动路线: 脚本: move_type_random if (self.x - $game_player.x).abs ** 2 + (self.y - $game_player.y).abs ** 2 < 36

                脚本: move_type_toward_player if (self.x - $game_player.x).abs ** 2 + (self.y - $game_player.y).abs ** 2 >= 36
虚无  堕落
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-8-1 22:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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