三角関数について


ぞうくん  2005-02-26 01:40:27  No: 119937

三角関数を使ってシューティングゲームの誘導弾をつくろうとしたのですが、
形としては
「敵が前方から向かってきて自機に向かって弾を撃ち、
その打った弾が誘導弾となって自機に向かってくる。」
と言う感じです。
そこで、
ソースの一部なのですが、
三角関数にする上で改良した点が、

①フォームロードに    
Dim sita As Double '角度変数θ
Dim sita2 As Double
Dim sita3 As Double
を追加

②敵の弾の表示のサブジェクトをこのように改良
Private Sub Teki4tama() '敵の玉(強い敵)
If Kaunnto = 2 Then
BitBlt Form1.hDC, TogetogeX(b) - 16, TogetogeY - 16, 32, 32, Picture16.hDC, 0, 0, vbSrcAnd
BitBlt Form1.hDC, TogetogeX(b) - 16, TogetogeY - 16, 32, 32, Picture15.hDC, 0, 0, vbSrcPaint
If TogetogeY > 1100 Then TogetogeY = 1101
If TogetogeX(0) > 2000 Then TogetogeX(0) = 2001
If TogetogeX(2) < -2000 Then TogetogeX(2) = -2001

Select Case b
       Case 0
TogetogeY = TogetogeY + Sin(sita) '3
TogetogeX(0) = TogetogeX(0) + Cos(sita) '7
       Case 1
TogetogeY = TogetogeY + Sin(sita2) '3
       Case 2
TogetogeY = TogetogeY + Sin(sita3) '3
TogetogeX(2) = TogetogeX(2) + Cos(sita3) '- 7
End Select
End If
End Sub

③タイマーにこのような命令を入れる
'左
If key(2) = True And 0 < sita < 180 Then sita = sita - 2
If key(3) = True And 0 < sita < 180 Then sita = sita + 2

If key(2) = True And 0 < sita2 < 180 Then sita2 = sita2 - 2
If key(3) = True And 0 < sita2 < 180 Then sita2 = sita2 + 2

If key(2) = True And 0 < sita3 < 18

ちなみにkey(2)は左 key(3)は右が押されているか否かのboolean変数です

そしてこれを実行すると、始めは全ての弾が上に行き、(自機と逆方向)
その後小刻みに震えながら横に動いたりと分けがわからず。。。
これで正しいと思いつつ結果は全くおもいどうりになりません。
どなたかご教授いただけないでしょうか。


ぞうくん  2005-02-26 01:48:09  No: 119938

すみません、
①フォームロードに    
Dim sita As Double '角度変数θ
Dim sita2 As Double
Dim sita3 As Double
を追加
ではなく、
Option Explicitの前でした

それと、フォームロードに
sita=135
sita2=90
sita3=45
と追加したことを書き忘れました。
これを踏まえてご教授お願いします


ひろ  2005-02-26 02:30:35  No: 119939

ラジアンと度の違いを理解していますか?


ひろ  2005-02-26 03:06:50  No: 119940

書きかけで送ってしまったのでその続き。

VBの三角関数のヘルプをもう一度最後までよく読み直しましょう。
そこに全ての答えが書いてありますから。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加