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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0807
hsp初心者別のオブジェクトの命令を実行してしまいます3解決


hsp初心者

リンク

2007/8/7(Tue) 23:23:55|NO.10201

左から飛んでくる玉を次々に打つゲームを作っています。
現在はタイミングよくボタンを押すと玉が消えるようにしてあります。
球を打つとなぜかキャラクターが球と同じ動き(右に移動,ball移動)をしてしまいます。
よろしくお願いします。


#include "hgimgx.as" screen 0,640,480,0 cls 4 hgini ddim timer,5 ddim nowtimer,5 animmove = 0 ;0の時初期アニメ,1の時打つアニメ dim charpo,3 dim ballpo,3 ;*****ボール登録***** mxload "ball" :BALL=stat suu=3 a=-120:b=-5:c=-50 dim ball,3 repeat suu regobj ball(cnt),BALL selpos ball(cnt) objsetf3 a, b, c selscale ball(cnt) a=a-50 loop ;*****キャラクター登録***** mxload "char" :CHAR=stat maload "char" regobj char,CHAR objact char,0,1 selpos char objset3 0.0f, -5.0f, -50.0f ;*****カメラ位置***** cammode CAM_MODE_LOOKAT selcpos objset3 0, -10, 100 selcint objset3 0, -5, 0 setborder 1024.0f,80.0f,1024.0f ; オブジェクト有効空間の設定 *main hgdraw hgsync 20 ;ball移動 repeat 3 selpos ball(cnt) objaddf3 1,0,0 loop selpos char stick k,0 ;アタック if (k&1)=1 & animmove=0{ delobj char mxload "char_attack" : CHAR_ATTACK=stat maload "char_attack" regobj char_attack,CHAR_ATTACK objact char_attack,0,1 selpos char_attack objsetf3 0.0f, -5.0f, -50.0f gosub *GOanimmove repeat 3 selpos ball(cnt): objgetv ballpo if charpo(0)+1>ballpo(0) & ballpo(0)+10>charpo(0){ ;ボールを消す delobj ball(cnt) } loop } if animmove=1{ nowtimer(0)=1.0*gettime(4) nowtimer(1)=1.0*gettime(5) nowtimer(2)=1.0*gettime(6) nowtimer(3)=1.0*gettime(7) ;秒数に変換 nowtimer(4)=nowtimer(0)*3600+nowtimer(1)*60+nowtimer(2)+nowtimer(3)/1000 ;0.5秒たったら打つアニメを終了、初期アニメ開始 if nowtimer(4)-timer(4) >0.5{ delobj char_attack mxload "char" :CHAR=stat maload "char" regobj char,CHAR objact char,0,1 selpos char objsetf3 0.0f, -5.0f, -50.0f animmove=0 } } goto *main *GOanimmove timer(0)=1.0*gettime(4) timer(1)=1.0*gettime(5) timer(2)=1.0*gettime(6) timer(3)=1.0*gettime(7) ;秒数に変換 timer(4)=timer(0)*3600+timer(1)*60+timer(2)+timer(3)/1000 animmove=1 selpos char objgetv charpo return



この記事に返信する


f

リンク

2007/8/8(Wed) 08:52:26|NO.10213

長い上に動作させられんのでは、読む気にならん。
俺らは、わざわざmxデータ用意せんとならんのか?

とりあえずmxloadとかを「setsizef 10,10 : setcolor 255,255,0 : addbox CHAR」とかに
書き換えるくらいしておいてくれ。

で、ぱっと見たところ、

regobj char,CHAR

こんな行があるが、HSPでは大文字小文字の区別は無い。

あと、

delobj char mxload "char_attack" : CHAR_ATTACK=stat maload "char_attack" regobj char_attack,CHAR_ATTACK

とか、メインループ中に見受けるが、mxloadは最初にやっておけば、
毎回読み込みなおす必要は無い。

delobj char_attack mxload "char" :CHAR=stat maload "char" regobj char,CHAR objact char,0,1
当然ここもだ。

後は
	;ボールを消す
delobj ball(cnt)
見たいにボールを消した場所があっても、
 ;ball移動
repeat 3 selpos ball(cnt) objaddf3 1,0,0 loop
見たいに、消したはずのボールもまとめて移動させたりしているぞ。

勝手に動くのはこの辺が原因じゃないかね。



f

リンク

2007/8/8(Wed) 08:58:30|NO.10214

態々メインループ中にデータを読み込みなおさなければならないのは、
変数に大文字小文字の区別が無い事を知らず、charとCHAR等同時に使っているからだな。

regobjする度、元データを壊している。



hsp初心者

リンク

2007/8/12(Sun) 00:13:46|NO.10327

分かりにくい説明ですいませんでした。

ご指摘どおり消したボールを動かそうとしていたのが原因でした。
そして大文字小文字の区別やloadのことまで教えていただき大変参考になりました。
ありがとうございました。



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