渦巻き弾を作りたくて、某サイトの掲示板で相談したところ
Private Sub Form_Click()
Const PI As Double = 3.14159268357438
Dim Param As Double
Dim X As Double
Dim Y As Double
Dim t As Double
Dim Magnify As Double
Dim XShift As Double
Dim YShift As Double
Me.BackColor = vbBlack
Param = 0.1
Magnify = 100
XShift = Me.ScaleWidth \ 2
YShift = Me.ScaleHeight \ 2
'とりあえず4周分
For t = 0 To 8 * PI Step 0.01
X = Exp(Param * t) * Cos(t)
Y = Exp(Param * t) * Sin(t)
X = X * Magnify + XShift
Y = Y * Magnify + YShift
PSet (X, Y), vbRed
DoEvents
Next t
End Sub
というサンプルソースを見せてもらったのですが
実際自分のプログラムに入れたところ、弾が渦巻き状に表示される
(大量に)だけで
1つの弾をその軌道上で動かすと言うことは出来ませんでした
どうしたらいいでしょうか?
BitBltでやりたいです
ご教授願います
クロスサイトポストするのならそのURLも載せた方がいいかと
http://hpcgi1.nifty.com/rucio/mb1/mb1.cgi
あと、考えた痕跡が全く無いのですが、
もし本当に何も思いつかないのならそれは貴方の運がなかったということで
> 1つの弾をその軌道上で動かすと言うことは出来ませんでした
> どうしたらいいでしょうか?
あきらめるのも手の内だと思ってあきらめる方向もアリです。
…駄目もとで、「運動=速度を時間で積分した物、なので弾の速度=位置の1次微分を考えれば運動を表現できる」と残しておきます。
(実際はdiscreteなモノですが)
回答ではありませんが、こういうことかなぁ・・・と
次の弾が表示される前に今の弾を消したら希望通りの動きに見えませんか?
基本的にアクションゲームのキャラクタというのは、前のキャラクタを消して次のキャラクタを描いています
>弾が渦巻き状に表示されるだけ
なのは、あくまでも弾道のサンプルだからでしょう
>次の弾が表示される前に今の弾を消したら希望通りの動きに見えませんか?
それは重々承知していますが
その処理が解らないから困っているのです
もしもおわかりならばご教授願います
>その処理が解らないから困っているのです
てっきりシューティングゲームをつくっていると思ったのですが違うようですね
シューティングゲームをつくっているのなら、自機の動きはどうしていますか?
敵機の動きは?
それと同じです
一応、「実用的ではありませんが」Psetの直前にClsを実行してみてください
「とりあえず」それっぽく見えるはずです
ちなみに
>BitBltでやりたい
ということですが、BitBltの使い方はわかりますよね?
PsetのところをBitBltにするだけですが何か問題ありますか?
問題があるとするならば、
1.表示にPictureBoxを使っていない
2.弾の画像を用意していない
3.BitBltの使い方がわかっていない
4.基本的なゲームのつくり方がわかっていない
というところでしょうか
Clsは、Form1.clsではなく、ただのclsですよね?
Form1.clsだと、グレーのフォームがでて、チカチカしたもので・・・
>Clsは、Form1.clsではなく、ただのclsですよね?
えっと・・・Psetを打っているのはPictureBoxですか?Formですか?
それに聞く前にやってみれば済む話でもあります
また、最初に
>実用的ではありませんが
と断っていますよね?
あと、こちらが質問している
>シューティングゲームをつくっているのなら、自機の動きはどうしていますか?
>敵機の動きは?
にも返答頂けますか?
普通…かどうかはわかりませんが、大体の場合、自機と敵機の動きをつくってから弾の処理などをつくると思いますので、もうできていると思うのですが
なんだかんだ解決しました
絵に描いたような終わり方ですね・・・
他の閲覧者の参考になると思いますので、もしよければその「なんだかんだ」を教えていただきたいです
ツイート | ![]() |