にゃんころ部屋

ゲーム制作、日記などのブログ。
うどん県民、ブログ歴10年。

ダメージポップアップ

2022-06-26 05:24:03 | RGSS3
ダメージポップアップを触ってました。
画像は0~9と正負記号です。1つがx:10 y:15ドットの大きさです。
ダメージの数値を画像の位置と同期させて描画する方式です。
draw_textは使用しません。スクリプト内にはありますがテスト用の表示となります。確認用です。


配列num_listが描画用データです。3桁までしか描画できません。仕様上3桁で十分なので問題なしとします。

num_list[0]が正負記号です。10で+ 11で- です。
#回復判定で数値が負の場合絶対値に変換後(abs)num_list[0]に11を設定します。

numlist[1]が100の位 numlist[2]が10の位 numlist[3]が1の位です。
実行される値が何桁かによって処理が変わるのでまず桁数の確認です。
最新のRUBYは桁数の取得を行うdigit関数があるのですがaceのRGSSはバージョンが古いのでありません。
def count_digit関数で文字列に変換後、lengthで取得します。

数値が3桁の場合100の位は100で割ることで取得できます。
10の位は100で割った余りをさらに10で割ると取得できます。
1の位は100で割った余りをさらに10で割った余りとなります。
num_list[1] = num / 100
num_list[2] = (num % 100) / 10
num_list[3] = (num % 100) % 10

取得後描画します。
self.bitmap.stretch_blt(rect_2, n_bitmap, rect_1)

#==============================================================================
# ■ Sprite_PopUpMaster
#==============================================================================
class Sprite_PopUpMaster < Sprite
#--------------------------------------------------------------------------
# ● 定数
#--------------------------------------------------------------------------
# ■フォント
FONT = ["Meiryo", "Impact", "Arial Black"] # フォント
# ■動力
M_OP = 30 # 透明化開始フレーム数(30)
OP_S = 15 # 透明度変化スピード(15)
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(pop = [""])

# スプライト設定
super(viewport = nil)
self.bitmap = Bitmap.new(40, 30)
self.bitmap.fill_rect(0, 0, 40, 30, Color.new(255, 255, 255, 128))
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
self.x = 90
self.y = 390
self.z += 200
self.opacity = 255

num_list = [10, 0, 0, 0]

#回復判定
pop.each{|value|
if value.is_a?(Numeric) and value < 0 #valueが数値で0未満の場合
pop[0] = value.abs #valueを絶対値に変換する。
num_list[0] = 11
end
}
#

num = pop[0] #rand(150)
p num.to_s + ":桁数"
p count_digit(num)

digit = count_digit(num)
case digit
when 1 #1桁
num_list[3] = num
when 2 #2桁
num_list[2] = num / 10
num_list[3] = num % 10
when 3 #3桁
num_list[1] = num / 100
num_list[2] = (num % 100) / 10
num_list[3] = (num % 100) % 10
else
p "桁数エラー"
end

p "num_list:"
p num_list

#
base_color = color = [Color.new(255,255,255), Color.new(100,100,100)]

pop.each{|value|
self.bitmap.font.name = FONT
self.bitmap.font.size = 15 #32

self.bitmap.font.color = base_color[0]
self.bitmap.draw_text_f(0, 15, 40, 15, value, base_color[1])
}
#

#描画
n_bitmap = Cache.system("Number")

num_list.each_with_index{|value, i|
rect_1 = Rect.new(value * 10, 0, 10, 15)
rect_2 = Rect.new(0 + i * 10, 0, 10, 15)
self.bitmap.stretch_blt(rect_2, n_bitmap, rect_1)
}
#

#~ self.bitmap.stretch_blt(self.bitmap.rect, n_bitmap, n_bitmap.rect)

# 動力設定
@delay = 0
@count = 0
self.visible = false if @delay > 0
end
#--------------------------------------------------------------------------
# ● 桁数の取得
#--------------------------------------------------------------------------
def count_digit(num)
return num.to_s.length
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
self.bitmap.dispose if self.bitmap != nil
super
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
if @delay > 0
@delay -= 1
return
end
self.visible = true

if @count >= M_OP
self.x -= 1
self.opacity -= OP_S
end

# 更新カウント加算
@count += 1
dispose if (self.opacity == 0)
end
end

画面左下+035が描画結果となります。
下の数値は確認用です。「35」なので正常に動作しています。
def updateで30フレーム経過後、左にスライドしながらフェードアウトします。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

書くことがない

2022-06-19 19:59:45 | 日記
今週は書くことが思いつきません。

コナンの黒幕でも予想。
元太「なあ、コナン。どうしてお前だけが、子供の体だと思ったんだ?」
コナン「!?」
光彦「そうですよ、コナン君」
歩美「そうよ、工藤新一・・・」
コナン「ば、ばかな・・・」
???「わしじゃよ、新一」

ここで生レバーが流れる。

灰原はのぞく。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ドラゴンズドグマ ダークアリズン

2022-06-12 18:15:07 | ゲーム
ドラゴンズドグマが発売10周年だそうでダークアリズン買いました。
ポーンが探索中、戦闘中問わず喋るのいいですね。かわいい。

本編クリアしました。20時間ぐらいでした。


黒呪島

上層ボス、ゲイザーくんかわいい。ミスタラにもゲイザーいたよね?ベルトスクロールのやつ。


中層ボス、なんとかビショップくん。ドラゴンに憑依する強敵でした。


下層ラスボス、名前不明。理不尽な選択を竜に迫られモンスター化してしまったようです。
初見は1時間戦って氷ミサイルにやられました。二回目は対策して30分ぐらいでいけました。


プレイヤー、カンテン。
ダガー装備できるジョブでプレイしました。レンジャー、アサシン、ストライダー。回避便利です。無敵時間ある?


メインポーン、ゼラチン。あだ名マツコ。
何度倒れても覚者が起こし大魔法連発ポーン。


10年前のゲームですがよくできてますね。
オープンワールドにしてはマップが小さく拠点も少ないですが戦闘は面白いです。
今の技術で続編作れば名作になる予感します。ドラゴンズドグマ2出してほしいです。

06.19 覚醒ダイモーン倒しました。


レンジャーで弓連射してたらひるんでそのまま倒せました。


ドラゴンズドグマ2 開発中 やったー!
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

シン・ウルトラマン

2022-06-05 14:11:14 | 映画・アニメ
映画館行ってきました。パンフレットが置いてなかったのですがみんな持って帰っちゃったのかな?
ウルトラマンは初代とティガぐらいしかわかりません。そんな私でも見れました。

あらすじ:舞台は現代の日本。巨大不明生物、通称「禍威獣」が次々と襲って来る世界。
既存の兵器では歯が立たない敵を前にして、日本政府は「禍威獣特設対策室専従班」通称「禍特対」を設立。
主人公の神永新二も禍特対に配属、未知の生物から人々を守るため任務に当たっていた。
そんな中銀色の巨人が突如宇宙から現れる。対策のために新たに禍特対に配属された分析官・浅見弘子の報告書には「ウルトラマン(仮称)、正体不明」と書かれていた。



感想:電子音ぐるぐるキックのやけくそ感。すき。
横から見たザラブ星人がびんぼっちゃまの服みたいですがもともとああいう設定なのかな?
長澤まさみがアスカっぽく見えました。エヴァをそこまで見ていない私でもそう感じました。尻をドラムのごとく叩きます。ふつう。

カラータイマーが削除されていましたが、大人向けの作品作り的観点からピコピコ鳴るのは子供っぽいという判断でしょうか。
作中だとメフィラスが地球での活動時間についてちょっと言及するだけで終わってます。光線撃ちあう時だったかな?
よく考えると「地球のみなさん!私は今めちゃくちゃしんどいです!活動限界です!」ってアピールしているわけだから英断かもしれません。子供が見るとわかりやすい気はします。

どこかで見ましたが初代ウルトラマンではゾフィーはハヤタとウルトラマン両方に1つずつ命を与えます。
シン・ウルトラマンではウルトラマンが神永に自分の命を与える手助けのみにとどまっています。
これは冒頭の神永が自分の命を犠牲にして子供を助けようとしたことに関係がある様に感じました。
ウルトラマンも自分の命を犠牲にして神永を助けた、つまり神永と同じことをしたわけです。

自己犠牲=愛
ラストを変更したのはこういう事だったのでしょうか。
まあ、よくわかりません。

私のMVPは電子音ぐるぐるやけくそキックです。
米津玄師の曲もよかったです。珍しくスタッフロール終わってから出ました。



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする