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

Project1

 找回密码
 注册会员
搜索

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

查看数: 4651 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-14 20:42

正文摘要:

本帖最后由 miantouchi 于 2019-4-16 19:42 编辑 Game_Actor类图片中位置可以改玩家角色的战斗坐标,screen_x,screen_y,screen_z这三个函数是从哪里调用的呢?找了半天也没找到他们的上级调用部门。 另外这代码 ...

回复

灯笼菜刀王 发表于 2019-4-16 14:28:40
本帖最后由 灯笼菜刀王 于 2019-4-16 14:31 编辑
miantouchi 发表于 2019-4-16 12:45
Sprite_Battler  里面的类变量 @battler 储存着其对应的 战斗者 对象(Game_Actor 或 Game_Enemy)这句话不 ...


在Sprite_Battler里, 初始化是这样写的  def initialize(viewport, battler = nil)  这里, battler 这个参数,缺省的时候, 就表示使用默认值(nil)

所以, Sprite_Battler.new(@viewport2)  这个, 是表示调用 Sprite_Battler 的实例, 只给予视口参数, 战斗者是缺省的, 为什么缺省呢, 看下面的 def update

在 update 这里, 才会把主角队伍的角色(game_actors的实例) 赋值给了 前面已经安排好的 @actor_sprites[].battler , 这样写法, 是方便"战斗中换队员"这种系统的实现

--------------------------------
a =  你能理解它是变量对象,   f = []; f[0] =  你就无法理解它是变量对象了?

如果无法理解, 那再去复习基础教程,  你这里提的问题 第一个是基础教程:方法的定义,  第二个是基础教程 :数组的单位调用,  先巩固好基础啊骚年

点评

有些时候,看着理论明白了,但是一到脚本里面代码一多,就懵了,不管怎么说,还是感谢你这么详细解释让我明白了。  发表于 2019-4-16 15:44
基础教程我看那块比较好,我就是看F1文档和RGSS3那个教程可以吗?  发表于 2019-4-16 15:43
哈哈,原来我卡在def update这段代码,这下我明白了,至于基础,缺省这块我是明白的,就是这么巧妙的利用update传入game_actors的实例这块。  发表于 2019-4-16 15:42
灯笼菜刀王 发表于 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 认可答案

查看全部评分

芯☆淡茹水 发表于 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 我很赞同

查看全部评分

guoxiaomi 发表于 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
guoxiaomi 发表于 2019-4-15 17:22:29
ctrl+shift+F 全局搜索

点评

全局搜索开始就用过了,但是分析不到。  发表于 2019-4-15 23:04
KB.Driver 发表于 2019-4-15 13:15:10
VA里的话是Spriteset_Battle里用来根据对象模型决定精灵位置的
XP如果有同名类的话也是一样

点评

我思路卡住了,希望能帮忙看看楼下我的回复帖子。  发表于 2019-4-15 23:05
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-27 10:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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