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

Project1

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

[已经解决] 改变战斗图位置

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3226
在线时间
1865 小时
注册时间
2010-6-19
帖子
1207
跳转到指定楼层
1
发表于 2022-5-20 10:02:33 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想设置一个效果,战斗的时候角色战斗坐标会移动几步,然后在定位在一个坐标上,然后在进入正常战斗。

战斗显示用活动块在这里
class Sprite_Battler < RPG::Sprite

最后几行
    # 设置活动块的坐标
    self.x = @battler.screen_x
    self.y = @battler.screen_y
    self.z = @battler.screen_z
这里我知道这里是显示进入战斗时的坐标,然后

我的思路大概是这样:

# 设置活动块的坐标
然后先定义1个坐标
self.x = @battler.screen_x
self.y = @battler.screen_y
接着等待1秒 【等待1秒是想达到看起来连贯移动的效果....】
@wait_count = 40 【XP好像是40帧为1秒吧?】
修改坐标【在原坐标上减去数值,达到移动效果】
self.x = @battler.screen_x - 10
self.y = @battler.screen_y - 10
刷新画面
Graphics.update 【好像这样刷新是错误的,直接卡顿......】
然后开始重复几次,达到看起来有移动战斗图的效果

结果就是这样
# 设置活动块的坐标
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
@wait_count = 40
self.x = @battler.screen_x - 10
self.y = @battler.screen_y - 10
Graphics.update
@wait_count = 40
self.x = @battler.screen_x - 10
self.y = @battler.screen_y - 10
Graphics.update
@wait_count = 40
self.x = @battler.screen_x - 10
self.y = @battler.screen_y - 10
Graphics.update
@wait_count = 40
self.x = @battler.screen_x - 10
self.y = @battler.screen_y - 10
Graphics.update
@wait_count = 40
self.x = @battler.screen_x - 10
self.y = @battler.screen_y - 10
Graphics.update


问题出现了,画面最后会一直刷新,而且一直卡顿,坐标移动的效果好像是出来了,难道不应该是这样吗???

Lv3.寻梦者

梦石
0
星屑
3226
在线时间
1865 小时
注册时间
2010-6-19
帖子
1207
2
 楼主| 发表于 2022-5-20 12:56:01 | 显示全部楼层
qq634488405 发表于 2022-5-20 10:48
根据你的描述,你不应该直接去改update,而是应该在战斗前,生成Sprite_Battler的实例对象后去修改实例对象 ...

不太懂脚本,大概应该怎么弄
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3226
在线时间
1865 小时
注册时间
2010-6-19
帖子
1207
3
 楼主| 发表于 2022-5-20 23:17:18 | 显示全部楼层
qq634488405 发表于 2022-5-20 13:27
Sprite_Battler里添加实例变量
attr_accessor :offset_x
attr_accessor :offset_y

大佬,按你的方法,进入战斗的时候战斗图是移动了几下,可是好像看不到移动的效果,而是直接显示移动结束的位置,如何做到能看到移动效果,就是进入战斗的时候,角色和敌人都移动几步,然后在开始战斗

改变战斗图位置.rar (187.58 KB, 下载次数: 11)
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3226
在线时间
1865 小时
注册时间
2010-6-19
帖子
1207
4
 楼主| 发表于 2022-5-21 08:46:51 | 显示全部楼层
qq634488405 发表于 2022-5-21 00:32
Scene_Battle 1里initialize中# 生成活动块

放到start_phase1前面

已经看到效果了,不过有个BUG,在地图上面遇到明雷的话,开始战斗,会先显示一段人物战斗图移动的效果,然后进入战斗,然后又会在显示一段移动效果,接着出现战斗指令,如何把地图上的那一段效果去掉,直接就是战斗显示战斗图的移动效果~

改变战斗图位置.rar (188.11 KB, 下载次数: 10)
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3226
在线时间
1865 小时
注册时间
2010-6-19
帖子
1207
5
 楼主| 发表于 2022-5-21 09:59:33 | 显示全部楼层
qq634488405 发表于 2022-5-21 09:30
我上面的表述有些错误,Scene_Battle里不需要initialize,把initialize方法删了就好 ...

把initialize删除了之后,进入已经基本完美了,就是有进入战斗的时候会黑屏一下,啥情况

点评

Spriteset_Battle.new的时机变了,原本是所有画面准备好了再Graphics.transition,现在战斗图背景等是在Graphics.transition后出现  发表于 2022-5-21 14:00
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3226
在线时间
1865 小时
注册时间
2010-6-19
帖子
1207
6
 楼主| 发表于 2022-5-22 12:20:04 | 显示全部楼层
qq634488405 发表于 2022-5-21 09:30
我上面的表述有些错误,Scene_Battle里不需要initialize,把initialize方法删了就好 ...

感谢 完美解决
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-18 03:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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