Project1
标题:
攻击时指向敌人的箭头不见了
[打印本页]
作者:
clannad
时间:
2010-7-4 16:09
标题:
攻击时指向敌人的箭头不见了
本帖最后由 「旅」 于 2010-7-4 16:23 编辑
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● 初始化变量
#--------------------------------------------------------------------------
def initialize
@viewport1 = Viewport.new(0, 60, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# 生成战斗背景活动块
[color=red] @viewport5 = Viewport.new(0,0,640,480)
@battleback_sprite = Sprite.new(@viewport5[/color])
# 生成敌人活动块
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
# @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
@enemy_sprites.push(Sprite_Battler.new(@viewport4, enemy))#敌人的显示高度
end
# 生成敌人活动块
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
# 生成天候
@weather = RPG::Weather.new(@viewport1)
# 生成图片活动块
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 刷新画面
update
end
#..........................................................................
#--------------------------------------------------------------------------
# ● 胜利图
#--------------------------------------------------------------------------
def win
for sprite in @actor_sprites
sprite.win
end
end
#..........................................................................
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新角色的活动块 (对应角色的替换)
@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]
# 战斗背景的文件名与现在情况有差异的情况下
if @battleback_name != $game_temp.battleback_name
@battleback_name = $game_temp.battleback_name
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
@battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
@battleback_sprite.src_rect.set(0, 0, 640, 480)
end
# 刷新战斗者的活动块
for sprite in @enemy_sprites + @actor_sprites
sprite.update
end
# 刷新天气图形
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
# 刷新图片活动块
for sprite in @picture_sprites
sprite.update
end
# 刷新计时器活动块
@timer_sprite.update
# 设置画面的色调与震动位置
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# 设置画面的闪烁色
@viewport4.color = $game_screen.flash_color
# 刷新显示端口
@viewport1.update
@viewport2.update
@viewport4.update
end
end
#--------------------------------------------------------------------------
# ● 获取光标指向的敌人
#--------------------------------------------------------------------------
def enemy
return $game_troop.enemies[@index]
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 如果指向不存在的敌人就离开
$game_troop.enemies.size.times do
break if self.enemy.exist?
@index += 1
@index %= $game_troop.enemies.size
end
# 光标右
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# 光标左
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# 设置活动块坐标
if self.enemy != nil
self.x = self.enemy.screen_x + self.ox
self.y = self.enemy.screen_y + self.oy
end
end
class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# ● 获取光标指向的角色
#--------------------------------------------------------------------------
def actor
return $game_party.actors[@index]
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 光标右
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# 光标左
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
# 设置活动块坐标
if self.actor != nil
self.x = self.actor.screen_x + self.ox
self.y = self.actor.screen_y + self.oy
end
end
end
复制代码
改了红色的那里,使战斗背景全面化了
但是改好后指针不见了,再改回来又有了,
- -
怎么解决?
作者:
darkdrium
时间:
2010-7-4 16:18
lz你这个红色的地方默认脚本是没有@viewport5的
猜测你需要改下这个的z值,你试试看
作者:
clannad
时间:
2010-7-4 16:24
改哪里的?z轴我一直搞不清
作者:
darkdrium
时间:
2010-7-4 16:28
z轴越大的越靠近玩家,也就是说会遮住z轴小的
你加上一句@viewport5.z = xxx
不明白你还用了什么脚本,搜索这一页,只有两个@viewport5,根本看不出替代了@viewport1做什么用的(默认脚本里的战斗背景是在@viewport1里生成的)
作者:
clannad
时间:
2010-7-4 16:33
QQ截图未命名.jpg
(77.07 KB, 下载次数: 6)
下载附件
保存到相册
2010-7-4 16:32 上传
我把那里改回成
@battleback_sprite = Sprite.new(@viewport1)
结果变成先这样子了- -
上面多了一块黑的
作者:
逸豫
时间:
2010-7-4 16:41
话说为啥咱看不到红色……咱是色盲么……
作者:
darkdrium
时间:
2010-7-4 16:48
@viewport1 = Viewport.new(0, 60, 640, 480)
这句的60改成0,默认的就是0
作者:
clannad
时间:
2010-7-4 16:51
话说改好了,但是箭头还是在敌人的身后,(忘记说了,我用的是全动画脚本)
作者:
darkdrium
时间:
2010-7-4 17:10
oh,我没研究过这个脚本,大概就是z的关系啦,你调整下这个z值试试
作者:
clannad
时间:
2010-7-4 17:15
还是不行啊,我都调成天文数字了,还是在人物下面
作者:
darkdrium
时间:
2010-7-4 17:18
回复
clannad
的帖子
这个z值是相对的,你调这个viewport1的是背景- -
要不你把整个工程的脚本发上来我试试看吧,script.rxxxxx那个文件
作者:
clannad
时间:
2010-7-4 17:50
彩.rar
(3.68 MB, 下载次数: 94)
2010-7-4 17:49 上传
点击文件名下载附件
问题还蛮多的,先把这个解决吧,谢谢了
作者:
darkdrium
时间:
2010-7-4 18:09
回复
clannad
的帖子
这个。。。用了这么多的脚本。。。在下无能啊,战斗系统看不懂,没有敌人嘛这是
作者:
clannad
时间:
2010-7-4 18:16
好吧,的确有点复杂,我还是老实点放弃全动画吧
作者:
zhangbanxian
时间:
2010-7-4 21:26
Scene_Battle里搜这句
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
复制代码
改为
new_veiwport = Viewport.new(0, 0, 640, 480)
new_veiwport.z = 99999
@enemy_arrow = Arrow_Enemy.new(new_veiwport)
复制代码
角色光标同理。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1