| 
 | 名無し
  投稿者 : 名無し(YahooBB220063240054.bbtec.net) - 2004/05/25(Tue) 17:04 
  No.6301
 |  | 
 |  | 
 
 | 
 | 今、「テキスト」と書いてあるものに触れると、matiの494と1350のところに移動するというのをしたいのですが、↓のようにするとうまくいきません。「ASH」さん作の「立てこもり」をまねしたのですが、うまくいきません。どのようにすればいいのでしょうか?教えてください。 
 extends TextChar;
 while(1){
 for(tr in $chars)
 if (tr is shujinko && dist(tr.x-x-40,tr.y-y)<20 ){
 if(text=="テキスト"){
 $projectManager.loadPage($page_mati);$hshujinkox=494;$shujinkoy=1350;
 }
 
 }
 update();
 }
 
 | 
 
 
 | どのようにうまくいかないのか
  投稿者 : nuntora(acc5-ppp10.per.dialup.connect.net.au) - 2004/05/25(Tue) 23:04 
  No.6308
 |  | 
 |  | 
 
 
 | どのようにうまくいかないのかを書いてください。 「どのようなエラーが出てくるのか」
 「どのあたりが理解できないのか」
 等々です。プログラムを断片的に書かれただけではこちらも返答するのが大変です。プログラムを添付していただければ、さらに返信も容易になります。
 質問Formatは
 http://tonyu.kake.info.waseda.ac.jp/api/wiki.cgi?page=%bc%c1%cc%e4%a5%d5%a5%a9%a1%bc%a5%de%a5%c3%a5%c8
 です。
 
 | 
 
 
 | 名無し
  投稿者 : 名無し(YahooBB220063240054.bbtec.net) - 2004/05/26(Wed) 12:09 
  No.6311
 |  | 
 |  | 
 
 
 | はい。 ASHさん作の「立てこもり」のようなゲームを作っています。
 脱獄するときに、AとBの出口があり、Aに触れると、matiの494と1350のところに移動、Bに触れると、matiの300と1050のところに移動というような感じにしたいと思っています。ですが、AとBも同じところに移動してしまいます。どのようにすればよいでしょうか?
 | 
 
 
 | 添付
  投稿者 : nuntora(acc11-ppp345.per.dialup.connect.net.au) - 2004/05/26(Wed) 23:38 
  No.6330
 |  | 
 |  | 
 
 
 | 先に書いていただいたコードでうまくいくと思います。 原因は他の部分にあると思います。
 | 
 
 
 | Re: 名無し
  投稿者 : 茶々丸(YahooBB220063240054.bbtec.net) - 2004/05/27(Thu) 18:13 
  No.6338
 |  | 
 |  | 
 
 
 | はい。 では多分自機のほうに原因があると思うので自機のプログラムを書きます。書き加えないといけないところとかがあるとおもうので教えてください。よろしくお願いします。
 
 extends SpriteChar;
 
 a=newAnimation();
 $screenWidth=600; $screenHeight=400;
 while(1) {
 pal=$map.get(x,y);
 pau=$map.get(x,y);
 par=$map.get(x,y);
 pad=$map.get(x,y);
 
 if ($map.getat(x-16,y)>=$pat_map1+0 && $map.getat(x-16,y)<=$pat_map1+68) ptl=0;else ptl=1;
 if ($map.getat(x,y-16)>=$pat_map1+0 && $map.getat(x,y-16)<=$pat_map1+68) ptu=0;else ptu=1;
 if ($map.getat(x+16,y)>=$pat_map1+0 && $map.getat(x+16,y)<=$pat_map1+68) ptr=0;else ptr=1;
 if ($map.getat(x,y+16)>=$pat_map1+0 && $map.getat(x,y+16)<=$pat_map1+68) ptd=0;else ptd=1;
 
 a.pause();
 if (getkey(37)>=1 && ptl==1) {
 x-=3;
 a.loop($pat_char+9,$pat_char+11,5);
 }
 else if (getkey(37)>=1 && ptl==0) {
 a.loop($pat_char+9,$pat_char+11,5);
 }
 else if (getkey(38)>=1 && ptl==1) {
 y-=3;
 a.loop($pat_char+0,$pat_char+2,5);
 }
 else if (getkey(38)>=1 && ptl==0) {
 a.loop($pat_char+0,$pat_char+2,5);
 }
 else if (getkey(39)>=1 && ptr==1) {
 x+=3;
 a.loop($pat_char+3,$pat_char+5,5);
 }
 else if (getkey(39)>=1 && ptr==0) {
 a.loop($pat_char+3,$pat_char+5,5);
 }
 else if (getkey(40)>=1 && ptd==1) {
 y+=3;
 a.loop($pat_char+6,$pat_char+8,5);
 }
 else if (getkey(40)>=1 && ptd==0) {
 a.loop($pat_char+6,$pat_char+8,5);
 }
 $map.scrollTo(x-$screenWidth/2,y-$screenHeight/2);
 update();
 }
 | 
 
 
 | Re: 名無し
  投稿者 : ごま太郎(o131193.ap.plala.or.jp) - 2004/05/27(Thu) 21:55 
  No.6343
 |   | 
 |  | 
 
 
 | これって私のRPGサンプルのプログラム改良型でしょうか?アップしてない最新版以外のやつには決定的バグがありまして…。 if (getkey(37)>=1 && ptl==1) {
 x-=3;
 a.loop($pat_char+9,$pat_char+11,5);
 }
 else if (getkey(37)>=1 && ptl==0) {
 a.loop($pat_char+9,$pat_char+11,5);
 }
 else if (getkey(38)>=1 && ptl==1) {
 y-=3;
 a.loop($pat_char+0,$pat_char+2,5);
 }
 else if (getkey(38)>=1 && ptl==0) {
 a.loop($pat_char+0,$pat_char+2,5);
 }
 不自然だと思いませんか? 正しくは以下。
 if (getkey(37)>=1 && ptl==1) {
 x-=3;
 a.loop($pat_char+9,$pat_char+11,5);
 }
 else if (getkey(37)>=1 && ptl==0) {
 a.loop($pat_char+9,$pat_char+11,5);
 }
 else if (getkey(38)>=1 && ptu==1) {
 y-=3;
 a.loop($pat_char+0,$pat_char+2,5);
 }
 else if (getkey(38)>=1 && ptu==0) {
 a.loop($pat_char+0,$pat_char+2,5);
 }
 これで上方向への進行に関するバグが直ります(上だと壁を突き抜けてしまうバグ)。その他、壁際での挙動不審はこれから先アップデータして直す予定。
 
 ちなみに6338のプログラムはどこをいじっても移動にはかけらほども関わりません。matiの494と1350とはmatiのx座標494、y座標1350ということでしょうか? 6301のプログラムを見たところそういうことではないだろうとは思いますが、詳しくお願いします。
 | 
 
 
 | Re: 名無し
  投稿者 : 茶々丸(YahooBB220063240054.bbtec.net) - 2004/05/28(Fri) 17:23 
  No.6347
 |  | 
 |  | 
 
 
 | はい、x座標494、y座標1350のことです。 x座標やy座標が思いつきませんでした。すいません。
 ごま太郎さんのサンプルは見つけたらすぐに使わせてもらって(?)います。
 ごま太郎さんの通りにプログラムを変えてみると、動きが滑らかになりました。ありがとうございます。
 それはそうと何度か移動をやろうと努力したのですが、自分は頭悪いのでどうしても出来ません。なので教えてください。お願いします。
 | 
 
 
 | Re: 名無し
  投稿者 : ごま太郎(t190032.ap.plala.or.jp) - 2004/05/28(Fri) 18:04 
  No.6350
 |   | 
 |  | 
 
 
 | //****$shujinko.tonyu**** x=$hshujinkox;y=$shujinkoy;
 while(1) {
 update();
 }
 
 //****$text_.tonyu****
 while(1){
 if (crashTo($shujinko) && text=="テキスト"){
 $hshujinkox=494;$shujinkoy=1350;
 $projectManager.loadPage($page_mati);
 }
 update();
 }
 
 動作テストしてません。どっかで文法間違ってるかも^^;
 テキストと書かれたオブジェクトに主人公が接触すると、変数$hshujinkoxと$shujinkoyにそれぞれ494と1350を代入します。その後ページを移動。
 ロードページ後に、まず主人公はx座標とy座標にそれぞれ変数を代入。これによって初期位置を設定します。
 
 なお、この座標修正はループ前に書かれているのでループ中に$hshujinkoxと$shujinkoyをいじくっても変更は起きません。
 
 【注意事項】
 $hshujinkoxと$shujinkoyがnull(空白)だと、主人公初期座標が(0,0)になります。デバッグ中は$shujinko.tonyuのプログラムを以下のように修正しておきましょう。
 x=494;y=1350;
 while(1) {
 update();
 }
 | 
 
 
 | Re: 名無し
  投稿者 : 茶々丸(YahooBB220063240054.bbtec.net) - 2004/05/28(Fri) 20:57 
  No.6352
 |  | 
 |  | 
 
 
 | ほんっとうにすいません。 やっぱり出来ません。(Y_Y)
 ごめんなさい。
 じぶん本当に頭悪いので私に分かるように
 教えてください。
 本当にすいません。
 | 
 
 
 | Re: 名無し
  投稿者 : hkr(gta.kinet-tv.ne.jp) - 2004/05/28(Fri) 22:01 
  No.6354
 |  | 
 |  | 
 
 
 | とにかく、プログラムをつけてみてください。 そしたら何か分かるかもしれません。
 | 
 |