背景について
投稿者 : kazz(ntchba121221.chba.nt.ngn2.ppp.infoweb.ne.jp)
- 2011/09/20(Tue) 11:59
No.13319
|
|
|
|
|
洞窟物語なんかでは背景が自機に連動して動いてます。 tonyuでもできるでしょうか?
panelを使ったのを作りたいです。
※zorderを200以上にするとマップの後ろに描けるそうです。
|
Re: 背景について
投稿者 : ぐりーんげーむ。(p2234-ipngn811hodogaya.kanagawa.ocn.ne.jp)
- 2011/09/20(Tue) 17:54
No.13320
|
|
|
|
基本的にTonyuは2Dで出来ることならできます。
やり方は色々あるのですが、最終的な動作は自機と逆に動くことです。 (自機が右上にいくと背景は左下に動く)
また遠くの背景ほどゆっくり動きますから、自機が動いた距離より少し小さく動かすと、それっぽくなります。 (電車内の窓から外を見る感じです)
一概にこのプログラムがいいとは言えない処理なので、ひとまず作ってみてはどうでしょうか。
|
Re: 背景について
投稿者 : 雲ぷりん(145.39.150.119.ap.yournet.ne.jp)
- 2011/09/20(Tue) 20:49
No.13322
|
|
|
|
いくつか、それをやっている プログラムがプロジェクトに上がってたと思います。 パネルかどうかは覚えてませんが・・・
|
Re: 背景について
投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/20(Tue) 21:14
No.13333
|
|
|
|
ttp://hoge1e3.sakura.ne.jp/tonyu/project/pages/viewProject.cgi?mainkey=207&
これのことでしょうか?
|
Re: 背景について
投稿者 : kazz(ntchba121221.chba.nt.ngn2.ppp.infoweb.ne.jp)
- 2011/09/22(Thu) 21:24
No.13350
|
|
|
|
>>OceanLight そういうのです! ありがとうございます。 ほかの皆さんもありがとうございます。
|
Re: 背景について
投稿者 : kazz(ntchba121221.chba.nt.ngn2.ppp.infoweb.ne.jp)
- 2011/09/23(Fri) 15:24
No.13351
|
|
|
|
ttp://hoge1e3.sakura.ne.jp/tonyu/project/pages/viewProject.cgi?mainkey=207& のサイトのプログラムを、 *****************************
extends SecretChar;
Hosi=new Panel(); //パネル(背景)の作成 使い方はやや特殊
Hosi_p=$pat_item+13; //パネルの元画像 ※standardクラスの変数
Hosi_sc_speed=2; //値が大きいほどゆっくりスクロールする ゼロは不可
Hosi.resize($screenWidth,$screenHeight); //最低でもウィンドウサイズより大きくする
//Hosi.drawDxSprite(Hosi.width/2,Hosi.height/2,Hosi_p,0,0,Hosi.width/getPatWidth(Hosi_p),Hosi.height/getPatHeight(Hosi_p)); for(_x=0;_x<$screenWidth;_x+=getPatWidth(Hosi_p)){ for(_y=0;_y<$screenheight;_y+=getPatheight(Hosi_p)){ Hosi.drawDxSprite(_x+getPatWidth(Hosi_p)/2,_y+getPatheight(Hosi_p)/2,Hosi_p,0,0,1,1); } } //パネルに画像を貼り付ける //連続表示して埋める Hosi.zOrder=301; Hosi.alpha=150; while(1){ Hosi.draw($viewX,$viewY,$screenWidth,$screenHeight,($viewX/Hosi_sc_speed)%Hosi.width,($viewY/Hosi_sc_speed)%Hosi.Height); //ヘルプに詳細が載ってないメソッド //第1、第2引数は表示先(画面)の左上座標 //第3、第4引数は表示する範囲 //第5、第6引数は表示元(パネル)の左上座標 update(); }
*****************************
こう自分のゲームに合うようにました。
でも、マップスクロールがマイナスのときは背景が表示されません
バグでしょうか?
それとも↑のプログラムが悪いんでしょうか?
|
Re: 背景について
投稿者 : ぐりーんげーむ。(p36193-ipngn402hodogaya.kanagawa.ocn.ne.jp)
- 2011/09/23(Fri) 15:58
No.13352
|
|
|
|
draw関数に渡している第5、第6引数がマイナスになっているのが原因です。 パネルの左上の座標は(0,0)なので、これを超えると処理をスキップするようです。
回避するには$ViewX,$ViewYの値によって描写するパネルの座標を変えます。 draw部分を以下のように書き換えてください。 if ($ViewY<0) drawY = $ScreenHeight+($viewY/Hosi_sc_speed)%Hosi.Height; else drawY=($viewY/Hosi_sc_speed)%Hosi.Height; if ($ViewX<0) drawX = $ScreenWidth +($viewX/Hosi_sc_speed)%Hosi.width; else drawX=($viewX/Hosi_sc_speed)%Hosi.width; Hosi.draw($viewX,$viewY,$screenWidth,$screenHeight,drawX,drawY); $ViewX,$ViewYが0未満のときはパネルの端からさかのぼって行くように座標を指定しました。
ついでに言うと現時点でTonyuにプログラム関連のバグは無かったような気がします。 (フルスクリーン等にはある)
|
Re: 背景について
投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/23(Fri) 16:21
No.13353
|
|
|
|
drawY=amod(floor($viewY/Hosi_sc_speed),Hosi.Height); drawX=amod(floor($viewX/Hosi_sc_speed),Hosi.width); Hosi.draw($viewX,$viewY,$screenWidth,$screenHeight,drawX,drawY);
ぐりーんげーむ。さんのものを短くしてみました
amodか%を使うかで余りの返り値が異なります。 この場合、常に正の数を返すamodが良いでしょう。
|
Re: 背景について
投稿者 : kazz(ntchba121221.chba.nt.ngn2.ppp.infoweb.ne.jp)
- 2011/09/23(Fri) 17:26
No.13354
|
|
|
|
BBSにきてよかったです!
二人ともありがとうございます。
動きました。
使わせていただきます。
|
Re: 背景について
投稿者 : kazz(ntchba121221.chba.nt.ngn2.ppp.infoweb.ne.jp)
- 2011/09/23(Fri) 18:21
No.13355
|
|
|
|
BBSにきてよかったです!
二人ともありがとうございます。
動きました。
使わせていただきます。
|
Re: 背景について
投稿者 : kazz(ntchba121221.chba.nt.ngn2.ppp.infoweb.ne.jp)
- 2011/09/23(Fri) 18:39
No.13356
|
|
|
|
間違えて二回送信してしまいました。
プロジェクトボードに↑を使ったゲームをupしたので、やってみてください。かなり難しいです。
|
|