emoticon関数
投稿者:
mosmoss
投稿日:2016/10/29 12:09
≪制作の期限
|
記事がスパム認定されるの巻≫
サイト「ぴぽや」様の感情アイコン素材と効果アニメ再生関数を利用した
感情表現アイコンを表示するemoticon関数です
使い方(RPGエディタを想定しています)
1、emoticon関数を開始スクリプトにコピペする
2、使う素材の一枚絵二枚を使うマップに登録する
3、使いたいアイコンのスプライト番号を確認
4、アイコンを表示させたい場所の画面座標を調べる
5、表示させたいイベント内にスクリプトを書く
1、下の関数を開始スクリプトにコピペします
上の関数を開始スクリプトにコピペしたら
2、次の一枚絵二枚をクリップして使うマップに登録します

【一枚絵】emoticon_01

【一枚絵】emoticon_02
この素材はサイト「ぴぽや」様http://piposozai.blog76.fc2.com のアイコン素材を
RmakeのRPGエディタで拡張画像として使うために二分割したものです
emoticon01とemoticon02をマップに登録したら
3、使いたいアイコンと、スプライト番号の対応関係を把握します
上の二枚の画像を見てください
左上のビックリマークが0、その隣のはてなマークが1、その隣が2,その隣のおんぷが3、その隣が4,
次の行の怒りマークが5...といった順番で一枚目は0~44まで計45のマークを振ってあります
二枚目は左上のキラキラマーク45から始まり、右下の89番がスプライト番号の最後です
スプライト番号は0や1などと半角英数で書きます
番号だと使いづらい、管理しづらいという人は、関数内のオプション機能を編集して、
"びっくり"、"はてな"など、自分にとってわかりやすい名前をアイコンにつけてみてください
名前を付ける場合は半角クォーテーションマーク""でくくってください
(対応表を作るのは諦めました、すみません・・・)
4、表示させたい場所の座標を確認します
emoticon関数で使う座標は、例えばRPGエディタの場合は
画面の左上を(0,0)、右下を(512,384)とする
ピクセル単位の画面座標です
マップ作りやイベント操作で使う、マップ座標とは違う系統の位置座標なので注意してください
5、イベントエディタに次のように書きます
使用例:感情アイコンを表示して、再生終了後表示を継続するとき
使用例:再生終了後も表示を継続させた感情アイコンを消去するとき
使用例;再生&再生終了後アイコンが消える
使用例
オブジェクトを調べるとたまに効果アニメが再生したり
emoticonアイコンが表示されます
余談:
表示位置がずれているのは作者にやる気がないためです
ツイート
感情表現アイコンを表示するemoticon関数です
使い方(RPGエディタを想定しています)
1、emoticon関数を開始スクリプトにコピペする
2、使う素材の一枚絵二枚を使うマップに登録する
3、使いたいアイコンのスプライト番号を確認
4、アイコンを表示させたい場所の画面座標を調べる
5、表示させたいイベント内にスクリプトを書く
1、下の関数を開始スクリプトにコピペします
#emoticon関数
#スプライト縮小に対応するためのスプライト設定関数
def setSpriteRect2(img,imgw,imgh,x0,y0,w0,h0,x1,y1,w1,h1)
w2=imgw/512
h2=imgh/384
if w2>h2
setSpriteRect(img,x0/w2,y0/w2,w0/w2,h0/w2,x1,y1,w1*w2,h1*w2)
else
setSpriteRect(img,x0/h2,y0/h2,w0/h2,h0/h2,x1,y1,w1*h2,h1*h2)
end
end
#感情アイコンを表示、また表示内容を変更する関数
def emoticon(name,x,y,play_no,speed,save,se) #nameは表示したい感情アイコンの番号(名前)、x、yは表示座標(ピクセル単位の画面座標)を表す、何セット感情表現アニメを再生するか、再生スピード、再生終了時にスプライトを消すか残すか(trueかfalse)、同時に再生したい効果音のid(省略可能)
#キャンパスがビジブル状態になっているか否かの判定
#ビジブルでない場合、ビジブル状態にする
#RPGエディタで必要な確認
if getCanvasVisible()
else
setCanvasVisible(true)
end
#スプライトを作る画像idの選別
#######ここからオプション機能です#######
#呼び出す感情アイコンに名前をつけたいときに編集して使います
case name
when "びっくり"
name=0
when "はてな"
name=1
when "おんぷ"
name=3
when "怒り"
name=5
else
end
#######ここまでオプション機能です#######
#素材画像関連の設定
#指定されたスプライト番号(名前)に対応する素材画像idを変数id(画像)に入れます
if name >= 45
id=312265 #emoticon02の画像id
name=name-45
else
id=312258 #emoticon01の画像id
end
size=32 #エモグラ一コマ四方の大きさ #エモグラ一枚は正方形
imgw=480 #素材画像全体の横幅
imgh=288 #素材画像全体の縦幅
koma=15 #一行あたりのコマ数
#ここからスプライト設定
img_name = "img_emoticon"
#画像ハンドル名はimg_emoticonにしてみました
#お好みで変えてください
get_x = 0; get_y = 0; get_w = size; get_h = size
set_x = 0; set_y = 0; set_w = size; set_h = size
setVariable(img_name, createSprite(id))
setSpriteRect(getVariable(img_name),
get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h)
setSpriteZOrder(getVariable(img_name), 1) #zオーダーはとりあえず1 #レイヤーの前後関係を調節したい場合はここの数値をいじる
setSpritePosition(getVariable(img_name), x, y) #エモグラ表示位置(ピクセル画面座標)
#スプライトの描画
#スプライト変更
def setAnimeSprite(img_name,no,w,h,x,y,imgw,imgh,koma)
#スプライト画像のハンドル名、スプライト番号、一コマあたりの横幅、一コマあたりの縦幅、表示位置のx座標、表示位置のy座標、スプライト画像全体の横幅、スプライト画像全体の縦幅、スプライト画像の一行あたりのコマ数
#no(スプライト番号)というのは、スプライト画像の何番目のコマを表示するか、というもの
#スプライト画像の左上から右下へ向かって、1から始まる番号を振っている、0以下にすると何も表示しない
get_x = 0; get_y = 0; get_w = w; get_h = h
set_x = 0; set_y = 0; set_w = w; set_h = h
a=floor(no/koma) #行数
b=no-(a*koma) #余
if no<=0
get_w = 0; get_h = 0
set_w = 0; set_h = 0
elsif no<=koma
get_x = w*(no-1)
else
case b
when 0
get_x=w*(koma-1)
get_y=h*(a-1)
else
get_x=w*(b-1)
get_y=h*a
end #case
end #if no<=0
setSpriteRect2(getVariable(img_name),imgw,imgh,get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h)
#スプライトの描画
drawCanvas()
end #def setAnimeSprite
#ここから再生開始
if se #効果音が設定されていれば再生
playSound(se)
else
end #if
play=0
count=0
frame=name*3+1
setAnimeSprite(img_name,frame,size,size,x,y,imgw,imgh,koma)
if speed
speed=speed*1000
else
speed=2000 #スピードを設定しない場合、2と設定した場合と同じ速さで再生
end #if
loop=true
while loop
count=count+1
if count >= speed #スピードを考慮しつつ再生
count=0
if frame>name*3+3 #一セット再生するごとにプレイ数をカウント
frame=name*3+2
setAnimeSprite(img_name,frame,size,size,x,y,imgw,imgh,koma) #描画
play=play+1
frame=name*3+1
else
setAnimeSprite(img_name,frame,size,size,x,y,imgw,imgh,koma) #描画
frame=frame+1
end #if
end #if
if play>=play_no #設定した再生数を満たしたらループ終了
if save #感情アイコンを残す場合
else #感情アイコンを残さない場合
frame=0
setAnimeSprite(img_name,frame,size,size,x,y,imgw,imgh,koma) #効果アニメを消す
end #if
loop=false
end #if
end #while loop
end #def emoticon
#感情アイコンを消す関数
def deleteEmoticon()
deleteSprite(getVariable("img_emoticon")) #効果アニメを消す
drawCanvas()
end
上の関数を開始スクリプトにコピペしたら
2、次の一枚絵二枚をクリップして使うマップに登録します

【一枚絵】emoticon_01

【一枚絵】emoticon_02
この素材はサイト「ぴぽや」様http://piposozai.blog76.fc2.com のアイコン素材を
RmakeのRPGエディタで拡張画像として使うために二分割したものです
emoticon01とemoticon02をマップに登録したら
3、使いたいアイコンと、スプライト番号の対応関係を把握します
上の二枚の画像を見てください
左上のビックリマークが0、その隣のはてなマークが1、その隣が2,その隣のおんぷが3、その隣が4,
次の行の怒りマークが5...といった順番で一枚目は0~44まで計45のマークを振ってあります
二枚目は左上のキラキラマーク45から始まり、右下の89番がスプライト番号の最後です
スプライト番号は0や1などと半角英数で書きます
番号だと使いづらい、管理しづらいという人は、関数内のオプション機能を編集して、
"びっくり"、"はてな"など、自分にとってわかりやすい名前をアイコンにつけてみてください
名前を付ける場合は半角クォーテーションマーク""でくくってください
(対応表を作るのは諦めました、すみません・・・)
4、表示させたい場所の座標を確認します
emoticon関数で使う座標は、例えばRPGエディタの場合は
画面の左上を(0,0)、右下を(512,384)とする
ピクセル単位の画面座標です
マップ作りやイベント操作で使う、マップ座標とは違う系統の位置座標なので注意してください
5、イベントエディタに次のように書きます
使用例:感情アイコンを表示して、再生終了後表示を継続するとき
emoticon("おんぷ",64,64,3,2,true)
#emoticon(3,64,64,3,2,true)と書いても表示されるものは同じ
#emoticon(name,x,y,play_no,speed,save,se)
#nameは表示したい感情アイコンの番号(名前)、x、yは表示座標(ピクセル単位の画面座標)を表す、何セット感情表現アニメを再生するか、再生スピード、再生終了時にスプライトを残すか消すか(trueかfalse)、同時に再生したい効果音のid(省略可能)
使用例:再生終了後も表示を継続させた感情アイコンを消去するとき
deleteEmoticon()
使用例;再生&再生終了後アイコンが消える
emoticon(19,224,160,2,2)
使用例
オブジェクトを調べるとたまに効果アニメが再生したり
emoticonアイコンが表示されます
余談:
表示位置がずれているのは作者にやる気がないためです
コメントする
コメントするには、ログインする必要があります。
この関数だと、素材は一枚絵を用意すればいいので管理が楽になりますし、
アイコンも豊富に用意できて一気に面白くなりそうです。
キャラクタだと扱いやすい反面いろいろと煩雑な部分も多く、どちらも一長一短ありますね。
また、キャラクタで作るとどうしても画像にわずかなブレが出るので
それが気になるときもこちらを使うといいかもしれませんね。
ただ表示位置を綿密にやろうとすると、プレイヤー(あるいはカメラ)の位置決めからする羽目になり面倒もあります。
再生スピードや再生回数を指定できるので、その点はキャラクタより表現できる部分ですね。