Project1
标题:
如何在战斗时给敌人脚下显示名字
[打印本页]
作者:
renxiaomei
时间:
2011-6-20 22:25
标题:
如何在战斗时给敌人脚下显示名字
如何在战斗时给敌人脚下显示名字。 dsu_plus_rewardpost_czw
作者:
忧雪の伤
时间:
2011-6-21 13:21
本帖最后由 忧雪の伤 于 2011-6-21 13:23 编辑
截图.jpg
(21.63 KB, 下载次数: 1)
下载附件
保存到相册
2011-6-21 13:23 上传
module EnemyName
Edge = true
Plus = [24, 0]
String = '[No Display]'
Font = { :size => 20, :name => '黑体', :color => Color.new(255, 255, 255) }
class Sprite_EnemyName < Sprite
attr_accessor(:name)
attr_accessor(:size)
attr_accessor(:enemy)
def initialize(enemy)
super(nil); self.z, self.enemy = 9999, enemy
temp, self.ox, self.oy = Bitmap.new(640, 480), Plus[0], Plus[1]
self.size, string = [], ['width', 'height']
temp.font.size, temp.font.name = Font[:size], Font[:name]
string.each {|item| eval("size.push(temp.text_size(enemy.name).#{item})") }
self.bitmap = Bitmap.new(self.size[0] + 1, self.size[1] + 1)
bitmap.font.size, bitmap.font.name = Font[:size], Font[:name]
((-1).upto(1) {|x| (-1).upto(1) {|y| next if x.zero? and y.zero?;
bitmap.font.color = Color.new(0, 0, 0); rect = Rect.new(
bitmap.rect.x + x, bitmap.rect.y + y, bitmap.rect.width,
bitmap.rect.height); bitmap.draw_text(rect, enemy.name) } }) if Edge
bitmap.font.color = Font[:color]
self.bitmap.draw_text(bitmap.rect, self.enemy.name)
end
end
end
class Spriteset_Battle
include(EnemyName)
_array = ['initialize', 'update', 'dispose']
_array.each {|item| alias_method('_' + item, item) }
attr_accessor(:event_names)
def initialize
@enemy_names = []
$game_troop.enemies.reverse.each {|enemy|
(@enemy_names.push(Sprite_EnemyName.new(enemy))
) unless enemy.name.include?(String) }
_initialize
end
def dispose; _dispose
@enemy_names.each {|item| item.dispose }
end
def update
_update
@enemy_sprites.each {|item1| @enemy_names.each {|item2| (item2.x,
item2.y, item2.z, item2.visible = item1.x, item1.y, item1.z,
item1.battler.exist?) if item1.battler.equal?(item2.enemy) } }
end
end
复制代码
改造过来的- -||。不过其实大部分都不一样了。
这个不具备居中功能。但是多了描边功能。
其实是我懒得算……需要居中再说,其实就是几个字。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1