HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0330
ジャムhspdxのスプライトについて5解決


ジャム

リンク

2009/3/30(Mon) 11:34:00|NO.24261

スプライトでシューティングをつくっているのですが、
スプライトの画像は黒しか透過できないのでしょうか??

黒いキャラクターが線だけの透明になってしまうので、透過色を他の色にかえる方法を教えてください!



この記事に返信する


GENKI

リンク

2009/3/30(Mon) 22:58:11|NO.24267

スプライトの話ということなので、hspdxfixかhgimg3かEasy3Dかそのあたりの話だと思います。
が、どのプラグインかも分からないし、分かったところで答えられそうにないのであとは分かる方に任せます。


念のため、gcopyでの話だったとした場合の回答でもしておきます。
「gmode 4」を調べてみてください。


念のため、プラグインやgcopyでもどちらでも通用する方法も書いておきます。

元画像を加工して、透明にしたい部分を黒(0,0,0)に、透明にしたくない部分を黒(0,0,0)意外の
黒っぽい色(1,1,1)などに塗り替えてください。(0,0,0)と(1,1,1)は人の見た目では区別することは出来ません。
この作業に便利なソフトを2つほど紹介します。

PictBear(ver.2.0)の色域指定がとても便利です。
 選択範囲 → 色域指定
    色  :(0,0,0)
    許容値:1

ウィンドウ付属のペイントでも簡単に黒(0,0,0)だけを別の色に変えることが出来ます。
 背景色に黒(0,0,0)を選択。(パレットから右クリックで選択)
 画像のペースト方法を背景色透過に設定する。(下側の方)
 範囲選択してコピペするか、選択範囲をドラッグする。→背景にし指定した黒(0,0,0)のみ取り出せます。
 黒(0,0,0)をいったん緑や赤など目立つ色に置き換えてから塗りなおすといいでしょう。



GENKI

リンク

2009/3/30(Mon) 23:44:57|NO.24269

> スプライトの話ということなので、hspdxfixかhgimg3かEasy3Dかそのあたりの話だと思います。
> が、どのプラグインかも分からないし、分かったところで答えられそうにないのであとは分かる方に任せます。
>
>
> 念のため、gcopyでの話だったとした場合の回答でもしておきます。
> 「gmode 4」を調べてみてください。

すみません、たった今気づきました。
質問のタイトルに、

> hspdxのスプライトについて

と書いてありましたね。失礼しました。
いつもタイトル読まないもので…。



ジャム

リンク

2009/3/31(Tue) 09:58:48|NO.24274

では、キャラクターの内部の黒色部分を(0,0,0)から(1.1.1)に変えてためしてみますね。



あり

リンク

2009/3/31(Tue) 10:43:20|NO.24275

es_bufferの第3パラメータで透過色を指定できます。
詳しくはes_bufferのヘルプとhspdxのドキュメントを読んでください。
;	透過色指定サンプル(付属サンプル改造)
#include "hspdx.as" es_ini onexit *owari es_screen 640,480,32,,1,1 if stat=1 : goto *dderr1 if stat=2 : goto *dderr2 goto *start *dderr1 dialog "DirectXの初期化に失敗しました。",1 : end *dderr2 dialog "スクリーンの初期化に失敗しました。",1 : end *dderr3 es_bye : wait 100 : dialog "VRAMの容量が不足しています。",1 : end ;------------------------------------------------------------------ *start buffer 3,640,480,0 :cls 4 color 255 :boxf 10,10,54,54 color 0 :boxf 20,20,44,44 es_buffer 0,2,$ff0000 ; ここで透過色を指定($ff0000をコメントアウトすると黒が透過されます) if stat : goto *dderr3 es_size 64,64,60 es_pat 0, 0,0 es_pat 1, 0,0 gsel 0,1 es_cls : es_sync : wait 100 myx=100:myy=100 es_set 0,myx,myy,0 a=0 ky=0 *main stick ky,$1f gosub *keychk if ky&$10 : gosub *ringo if ky&$80 : goto *owari es_pos 0,myx,myy es_effect 0,64,64,0,0,t,ESB_ALPHA,64,$ffffff:t++ :t=t\255 es_cls 0,0,255 es_draw : es_sync await 1 goto *main *ringo es_new a,2 es_set a,myx,myy,1,1 es_adir a,rnd(64),400 es_effect a,64,64,0,0,rnd(256),ESB_ALPHA,128,$ffffff return *owari es_bye end *keychk if ky&2 : goto *go_up if ky&8 : goto *go_down goto *keychk2 *go_up if myy>-32 : myy-=8 goto *keychk2 *go_down if myy<380 : myy+=8 *keychk2 if ky&1 : goto *go_left if ky&4 : goto *go_right return *go_left if myx>-32 : myx-=8 return *go_right if myx<580 : myx+=8 return
上のサンプルで赤色が透過するのを確認しました。



ジャム

リンク

2009/4/1(Wed) 19:52:27|NO.24320

ありがとうございます!!



ONION software Copyright 1997-2023(c) All rights reserved.