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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0514
のほほんズミサイル発射6解決


のほほんズ

リンク

2006/5/14(Sun) 10:32:44|NO.719

どうもこんにちは
質問ばかりですいません
今3Dのタンクゲームをつくっているものです
実はまだミサイルの機能が出来上がっていません
スペースキーを押したら
ミサイルオブジェクトを作成して
そのミサイルがタンクの向いている向き進んでいって
3秒ぐらいしたら消滅する
みたいな感じの流れです

それを自分なりにスクプリトにしたのですが
スペースキーををしても発射されません
あと前回質問したとき
スクプリトがすぐ実行できるように
とご指摘がありましたが
スクプリトを作っている間にぐしゃぐしゃ
になってしまったため
すぐに実行できない悪い例の書き方になってしまいました
すいません

3Dミサイル発射スクプリト(発射不能)

;読み込み addxfile MISAIRUMODEL,"ミサイル.x" ;ミサイル発射 stick KY,16 if KY&16: { regobj MISAIRUOBJ,MISAIRUMODEL repeat objgetfv FV2 FV2.1=-FV2.1 fvdir FV2, 0.0f, 0.0f, 1.5f fvadd FV, FV2.0, FV2.1, FV2.2 if cnt=500: { delobj MISAIRUOBJ } loop }
この質問についてわからないことがあれば
わかる範囲でお答えします
ご回答よろしくお願いします



この記事に返信する


44A

リンク

2006/5/14(Sun) 14:17:04|NO.723

ifの:の後の{を使っているのが気になります。:はいらないのでは。
ミサイルはevent命令の方がいいかもしれません。
私のHPでシューティング他のソースも公開していますので良かったら
参考にしてみてください。



Drip

リンク

2006/5/14(Sun) 14:52:19|NO.724

Dripです。

 のほほんズさん、こんにちは。プレイヤーを狙って撃ってくるミサイルの作成について、
ということでまた不思議なスクリプトなのですが、のほほんズさんの提示されたスクリプトでは、
どこで敵から見たプレイヤーの角度を検出しているのでしょうか。
(当然それがわからないとプレイヤーを狙いようがありません。)
今の状態では、誰かが書き下ろした全然違うスクリプトしか受け取ることができません。
スクリプトにはコメントをつけ、必ずどこで何をしているのかしっかり書きましょう。

※ぐしゃぐしゃになっていてもいいので、自分の書いた意味のあるプログラムは削除せずに残して
 おきましょう。そうすればどこからおかしくなったのか教えてもらえる場合が多々あります。



のほほんズ

リンク

2006/5/15(Mon) 17:21:24|NO.741

ご回答ありがとうございます

44Aさんのスクプリトをみてみたら
残念ながら自分の作っているものと少し
違ったため参考にできませんでした
ご投稿ありがとうございました

Dripさん
敵がミサイルを撃ってくるのではなく
プレイヤーがミサイルを撃つ形にしたいのですが
(自分の説明のしかたが悪かったのかな)
プレイヤーの操作しているタンクの座標と角度を取得して
スペースキーを押したら発射
一定時間たったら消滅
という流れです
まずは当たり判定とか考えずに
発射の機能がつけばいいとおもっています
それからぐしゃぐしゃですがとりあえず
メインループを中心にスクプリトを投稿しました

#include "hgimg3.as" addxfile RBMODEL,"タンク.x" ;タンク読み込み addxfile MISAIRUMODEL,"ミサイル.x" ;ミサイル読み込み setuv 0,0,512,512 ;床面作成読み込み setsizef 120.0f,120.0f addmesh FLMODEL,120,120,0 texload "Floor.bmp" gsel 0 regobj RBOBJ,RBMODEL ;タンク作成 selpos RBOBJ:objsetf3 0.0f,0.0f,-60.0f *DRAWLOOP ;メインループ hgdraw hgsync 20 stick KY,15 ;この辺から移動処理 selpos RBOBJ:objgetfv FV selang RBOBJ if KY&4:addang RBOBJ,0.0,-0.05,0.0 if KY&1:addang RBOBJ,0.0,0.05,0.0 objgetfv FV2 FV2.1=-FV2.1 if KY&2: { fvdir FV2, 0.0f, 0.0f, 0.3f fvadd FV, FV2.0, FV2.1, FV2.2 } if KY&8: { fvdir FV2, 0.0f, 0.0f, -0.3f fvadd FV, FV2.0, FV2.1, FV2.2 } if KY&16: { ;ここからミサイルの機能をつけるつもり regobj MISAIRUOBJ,MISAIRUMODEL time=500 selpos RBOBJ:objsetfv FV ;タンク本体の座標取得 selang RBOBJ ;タンク本体の角度取得 objgetfv FV2 FV2.1=-FV2.1 fvdir FV2, 0.0f, 0.0f, 1.5f fvadd FV, FV2.0, FV2.1, FV2.2 time=time-1 if time=0: { delobj MISAIRUOBJ } objgetfv FV2 FV2.1=-FV2.1 fvmin fv, -58.0f,0.0f,-58.0f fvmax fv, 58.0f,0.0f,58.0f selpos RBOBJ:objsetfv FV selcint:objsetfv FV fvdir FV2, 0.0f, -4.0f, -8.0f fvadd FV, FV2.0, FV2.1, FV2.2 selcpos:objsetfv FV goto *DRAWLOOP

スクプリトは以上ですが
もっと説明を付け加えてほしい
スクプリトがもっとしりたい
など
この質問についてわからないことがあったら
わかる範囲でお答えします
ご回答よろしくお願いします



Drip

リンク

2006/5/15(Mon) 20:18:28|NO.744

Dripです。

 こんにちは。プログラムの投稿有難うございます。
さて、早速ですが、のほほんズさんの投稿されたスクリプトには修正すべき個所が
無数に存在しています。代表的なものを以下に指示します。

・hginiが行われていない。
 hgimg3のシステムを使う場合、必ずこの命令を実行しましょう。

・HSP2.61以前の書式が使われている。(配列参照や擬似浮動小数等)
 HSP2.61以前の書式は使用できません。
 この状態ではプログラムを実行できません。HSP3の正しい書式は付属マニュアルの
 「プログラミングマニュアル1・基本仕様ガイド (hspprog.htm) 」を参照して下さい。

 のほほんズさんの書かれている書式は、なぜかhgimg.dllの書式と、hgimg3の書式と、
HSP2.61の書式が入り交ざった不思議なものになっています。(hgimgとhgimg3は別物です。
 勿論付属サンプルに互換性はありません。HSP2.61の書式も使用できません。)
まず、HGIMG3のマニュアルに従い、プログラムを全て書き直す必要があるように思えます。
おそらく現段階では、謎のエラーがあちこちで暴発し、思い通りに動かない状態になっている
ことでしょう。あせらず、一度付属マニュアルの

・プログラミングマニュアル1・基本仕様ガイド (hspprog.htm)
・(拡張プラグイン)HGIMG3.DLL リファレンスマニュアル (hgimg3.txt)

 を入念に読み直し、理解してからプログラミング作業に移ることを強くお勧めします。
堅実な努力は必ず実を結びます。がんばってください。



のほほんズ

リンク

2006/5/18(Thu) 15:23:54|NO.768

ご回答ありがとうございました
少し自分で考えてみようと思います



K

リンク

2006/5/22(Mon) 20:23:05|NO.823

主要部分のダメな所の指摘だけ

if KY&16: { ;押された時に常に発射しようとしてる(time変数は弾一個分しか用意してないのに) regobj MISAIRUOBJ,MISAIRUMODEL ;押された数だけオブジェを用意してる time=500 ;押される度にセットされるので一個目も10個目も同じ selpos RBOBJ:objsetfv FV ;タンク本体に座標をセットになってる selang RBOBJ objgetfv FV2 FV2.1=-FV2.1 fvdir FV2, 0.0f, 0.0f, 1.5f fvadd FV, FV2.0, FV2.1, FV2.2 time=time-1 ;スペースを押されなければここには来ない、 if time=0: { ;押されたら500セットされてるので、ここに来る事はない delobj MISAIRUOBJ } ;}が足りない ;ミサイルobjに座標をセットしていない(常に0,0,0の座標に出てる)



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