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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0905
ユナンRPGゲームなどのキャラ移動に関して9解決


ユナン

リンク

2008/9/5(Fri) 19:45:58|NO.19040

キャラ移動のアルゴリズムがいまいちよくわかりません。


背景を固定して、キャラクターの位置をmx,myと置き変化させていく方法を、現在はとっていますが、ポケモンなどのように主人公が常にスクリーンの真ん中にくるようにしたいのです。


そのような場合は今度はキャラクターを固定すればいいのですか?



この記事に返信する


Quiet

リンク

2008/9/5(Fri) 19:56:51|NO.19041

僕は主人公を固定にしてマップを逆移動させています。
ただそうするとマップ外がモロに見えてしまうことにもなりますが・・・

マリオのように、時にキャラ移動、時に背景移動するように
仕向けたらどうでしょうか?



ユナン

リンク

2008/9/5(Fri) 20:50:29|NO.19045

>>時にキャラ移動、時に背景移動

なんかすごく処理が難しそうですね・・・
サンプルとか書いてあるとこありますでしょうか?



Quiet

リンク

2008/9/5(Fri) 21:12:00|NO.19046

ttp://hsp.tv/play/pforum.php?mode=all&num=17407

ttp://hsp.tv/play/pforum.php?mode=all&num=17324

二つとも過去スレのものです。



kalm

リンク

2008/9/5(Fri) 21:13:21|NO.19047

背景の座標がある条件を満たしたら、今度はキャラクターの座標が変わるようにすればいい。



ユナン

リンク

2008/9/5(Fri) 22:39:11|NO.19051

回答ありがとうございます。
それらを参考にして以下のプログラムを書いてみたのですが、スクロールには成功するのですがどうしても主人公がちらついてしまいます。

この場合、どうしても短時間の間に切り詰めて処理を入れているのでしょうがないのでしょうか?
ちらつきを回避する方法などありましたらお願いします。


x:横
y:縦
ttt:時間

stick key
if(key==1){
gsel 1
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
gcopy 3,156,160,24,32
pos 156,160:gcopy 2,24,96,24,32:redraw 1
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16:redraw 1
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
gcopy 3,156,160,24,32
pos 156,160:gcopy 2,0,96,24,32:redraw 1
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16:redraw 1
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
gcopy 3,156,160,24,32
pos 156,160:gcopy 2,48,96,24,32:redraw 1
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16:redraw 1
await ttt:redraw 0
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
gcopy 3,156,160,24,32
pos 156,160:gcopy 2,24,96,24,32:redraw 1
}



Quiet

リンク

2008/9/5(Fri) 23:34:48|NO.19053

ちらつき防止ならredraw。



ユナン

リンク

2008/9/6(Sat) 00:36:52|NO.19056

これでなぜかちらつかなくなりました^^
みなさんわざわざありがとうございます。

if(key==1){
char_di=1:gsel 1
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,24,96,24,32
await ttt
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,24,96,24,32
await ttt
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,0,96,24,32
await ttt
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,0,96,24,32
await ttt
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,48,96,24,32
await ttt
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,48,96,24,32
await ttt
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,24,96,24,32
x=x-2:pos 0,0:gcopy 3,x,y,21*16,21*16
pos 156,160:gcopy 2,24,96,24,32
}



GENKI

リンク

2008/9/6(Sat) 00:43:23|NO.19057

メニューバーのツール→サンプルスクリプト参照。
サンプルのカテゴリを「game」にする。
ここにあるサンプル群はもう見ましたでしょうか?


> どうしても主人公がちらついてしまいます。

アニメーションの原理を理解していないためなのか、
redrawの使い方を間違えているのが原因だと思います。

http://hspdev-wiki.net/?HSP%B9%D6%BA%C2%2F%B4%F0%CB%DC%C5%AA%A4%CA%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%A5%D1%A5%BF%A1%BC%A5%F3
ここの「アニメーション その1 」をよんでみてください。



ユナン

リンク

2008/9/6(Sat) 20:29:32|NO.19091

了解しました。
もう一回目を通してみます^^



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