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

Project1

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

[已经解决] [已解决]Game_Actor类当中取得战斗画面的X,Y,Z坐标在什么地方

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14121
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2019-4-14 20:42:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 miantouchi 于 2019-4-16 19:42 编辑

Game_Actor类图片中位置可以改玩家角色的战斗坐标,screen_x,screen_y,screen_z这三个函数是从哪里调用的呢?找了半天也没找到他们的上级调用部门。
另外这代码是改一个角色,其他角色也跟着改了,是不是找到他们上级调用地方就更,随便更改他们每个角色的位置了?

1.png (62.24 KB, 下载次数: 6)

1.png

Lv2.观梦者

梦石
0
星屑
353
在线时间
15 小时
注册时间
2019-4-14
帖子
31
2
发表于 2019-4-14 20:45:47 | 只看该作者
  1. #--------------------------------------------------------------------------
  2.   # ● 取得战斗画面的 X 坐标
  3.   #--------------------------------------------------------------------------
  4.   def screen_x
  5.      case self.index
  6.     when 0
  7.       return 415
  8.     when 1
  9.       return 435
  10.     when 2
  11.       return 315
  12.     when 3
  13.       return 555
  14.     else
  15.       return 600
  16.     end
  17.   end
复制代码

用自身的索引id返回其他的值就可以了

点评

感谢提供使用方法。  发表于 2019-4-15 23:04
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

3
发表于 2019-4-15 13:15:10 | 只看该作者
VA里的话是Spriteset_Battle里用来根据对象模型决定精灵位置的
XP如果有同名类的话也是一样

点评

我思路卡住了,希望能帮忙看看楼下我的回复帖子。  发表于 2019-4-15 23:05
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

4
发表于 2019-4-15 17:22:29 | 只看该作者
ctrl+shift+F 全局搜索

点评

全局搜索开始就用过了,但是分析不到。  发表于 2019-4-15 23:04
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14121
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

5
 楼主| 发表于 2019-4-15 23:03:31 | 只看该作者
本帖最后由 miantouchi 于 2019-4-15 23:14 编辑

让大家久等了,思考了很久,才回的帖子,希望帮我看看解答下。这几张图的顺序就是我思路分析的顺序,最后一张除外。
问题1:Sprite_Battler类的实例我没有找到,他的实例是@actor_sprites这个数组元素吗?
问题2:Sprite_Battler类里面@battler这个我很不理解,他为什么能调用screen_x,screen_y,screen_z,@battler.battler_name,@battler.battler_hue等等
问题3: Spriteset_Battle类当中@actor_sprites[0].battle当中意思是调用Sprite_Battler类里面的@battle变量,然后把$game_party.actors[0]赋值给他吗?
    @actor_sprites[0].battler = $game_party.actors[0]
    @actor_sprites[1].battler = $game_party.actors[1]
    @actor_sprites[2].battler = $game_party.actors[2]
    @actor_sprites[3].battler = $game_party.actors[3]
问题4:Game_Actor类最下面是调图片坐标位置的,我通过这几步分析怎么也分析不到这块来,只能分析到Spriteset_Battle和Sprite_Battler类这块,也就是我开始问的第二个问题。

1.png (69.62 KB, 下载次数: 8)

1.png

2.png (77.33 KB, 下载次数: 8)

2.png

3.png (66.63 KB, 下载次数: 6)

3.png

4.png (70.3 KB, 下载次数: 6)

4.png

5.jpg (113.36 KB, 下载次数: 5)

5.jpg
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14121
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

6
 楼主| 发表于 2019-4-15 23:12:58 | 只看该作者
guoxiaomi 发表于 2019-4-15 17:22
ctrl+shift+F 全局搜索

其实我一开始就用全局搜索了,我分别搜索了screen_x,screen_y,screen_z
我正常的思路是搜索出来Game_Actor类的实例,$game_actor.screen_x,$game_actor.screen_y,$game_actor.screen_z这样的字样,
可以没有找到。
我经过前几天的学习,想到Game_Actor类的实例是通过,$game_actors[id]这个形式获得了,我又开始找
$game_actors[id].screen_x,
$game_actors[id].screen_y,
$game_actors[id].screen_z
可惜也失败了没有找到,最后我通过大家回复通过正向思维分析卡在了Spriteset_Battle和Sprite_Battler这块。就是上楼的内容

6.jpg (113.48 KB, 下载次数: 6)

6.jpg
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

7
发表于 2019-4-15 23:52:57 | 只看该作者
miantouchi 发表于 2019-4-15 23:12
其实我一开始就用全局搜索了,我分别搜索了screen_x,screen_y,screen_z
我正常的思路是搜索出来Game_Act ...

亲测可以得到 $game_actors[id].screen_x,前提当然是你的id不能为0,对应的 Game_Actor 对象存在

点评

大神啊,多打点字啊,我基础不行啊,没啥变成基础的,真的看不明白。  发表于 2019-4-16 12:46
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31964
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

8
发表于 2019-4-16 07:23:00 | 只看该作者
这些不都是 Sprite_Battler 的实例么


@actor_sprites 或 @enemy_sprites 只是储存这些实例的数组而已。

Sprite_Battler  里面的类变量 @battler 储存着其对应的 战斗者 对象(Game_Actor 或 Game_Enemy)


可以在生成 Sprite_Battler 时代入


也可以随时侦测更改


所以照此推理,你要找的 画面坐标 就是这个

点评

感谢 芯大详细标注,是我对“对象这个概念有更深的理解了”,但是还剩下最后一点不太理解  发表于 2019-4-16 12:34

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 我很赞同

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37819
在线时间
5410 小时
注册时间
2006-11-10
帖子
6547
9
发表于 2019-4-16 10:26:34 | 只看该作者
本帖最后由 灯笼菜刀王 于 2019-4-16 10:28 编辑

战斗场景的调用可是环环相扣的

首先,进入战斗,切换战斗场景 $scene = Scene_Battle.new

然后, 战斗场景的图像显示全部来自 @spriteset = Spriteset_Battle.new

然后, Spriteset_Battle 分别调用 背景(Sprite.new), 战斗者(Sprite_Battler.new),天气(RPG::Weather.new), 显示的图片(Sprite_Picture.new), 计时器(Sprite_Timer.new)

战斗者就像上面芯大划出来的, 每一个战斗单位都调用一个战斗者实例,然后塞到 @enemy_sprites = [] 和 @actor_sprites = [] 里面

在Sprite_Battler里, 初始化的地方 def initialize(viewport, battler = nil) ,就有战斗者的参数接口, 而这个参数, 就是在 Spriteset_Battle 里, 芯大划线的地方, 赋予了 game_enemy 和 game_actors 的实例(保存到 @battler 这个实变量里)

所以, 它自然可以通过 @battler 来调用game_enemy 和 game_actors 的方法( 它们的老爸 game_battler 的方法当然也可以调用)

细节楼上的大佬们都详细解释了, 咱就不提了XD

点评

感谢你把来龙去脉给讲明白了,就差一点了,我发下楼下。  发表于 2019-4-16 12:34

评分

参与人数 1星屑 +100 收起 理由
RyanBern + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14121
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

10
 楼主| 发表于 2019-4-16 12:45:06 | 只看该作者
本帖最后由 miantouchi 于 2019-4-16 12:48 编辑

Sprite_Battler  里面的类变量 @battler 储存着其对应的 战斗者 对象(Game_Actor 或 Game_Enemy)这句话不太理解,是怎么得出这个结论的
是传入@viewport1,@viewport2这两个视窗的原因吗?
Sprite_Battler.new(@viewport1, enemy) 是敌人对象Game_Enemy
Sprite_Battler.new(@viewport2)                是角色对象Game_Actor

我现在的理解程度
$game_actors[id]的角色对象是Game_Actor

a=Game_Enemy.new()
这么写我能理解a是敌人对象Game_Enemy

现在系统Sprite_Battler.new这么个写法我就不知道了,就理解不了他指的对象了,没有Game_Actor,Game_Enemy一点迹象。

简单粗暴不从语法上讲,下面这样写我能理解他俩的对象是谁。
a=Game_Enemy.new()
b=Game_Actor.new()

1.jpg (187.39 KB, 下载次数: 13)

1.jpg

点评

参数缺省设置和默认参数, 这个在"方法的定义"里有说明  发表于 2019-4-16 14:19
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-30 08:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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