触手の動きのアルゴリズム教えてください
■ このスレッドは過去ログ倉庫に格納されています
0001とっつぁん
02/05/15 03:44ID:???グラディウスIIIの植物面にでてくるのや沙羅曼陀の1面ボスのゴーレムの手みたいに
時機を追いかけているうちに自ら絡まってこんがらかるような動きの触手の
アルゴリズムというか計算方法を教えてください。
0173あああ
02/06/14 21:16ID:MQwpPVXA(Module.bas で 定義)
Type rect
obj As Integer
ang As Integer
End Type
Sub Kansetu_Click ()
Const SHOULDER = 1 ' 肩
Const ELBOW = 2 ' 肘
Const HAND = 3 ' 手
ReDim x(4) As Single
ReDim y(4) As Single
ReDim an(10) As rect ' データ構造
' データ
an(0).obj = 0: an(0).ang = 0
an(1).obj = ELBOW: an(1).ang = 30
an(2).obj = HAND: an(2).ang = 45
an(3).obj = SHOULDER: an(3).ang = 25
an(4).obj = ELBOW: an(4).ang = 40
an(5).obj = SHOULDER: an(5).ang = 30
an(6).obj = HAND: an(6).ang = 60
an(7).obj = SHOULDER: an(7).ang = 45
an(8).obj = ELBOW: an(8).ang = 60
an(9).obj = -1: an(9).ang = 0
0174あああ
02/06/14 21:18ID:MQwpPVXAh = ScaleHeight / 2 ' Form の 高さ
w = ScaleWidth / 4 ' Form の 幅
sl = 250 ' 肩の長さ
el = 300 ' 肘の長さ
hl = 200 ' 手の長さ
c = 5: ' 色
j = 0:oan1=0:oan2=0:oan3=0
Do
If an(j).obj = -1 Then Exit Do
Cls
Select Case an(j).obj
Case 1: an1 = an(j).ang + oan1 ' 肩を動かす
an2 = an1 + oan2
an3 = an2 + oan3
oan1 = an1
Case 2: an2 = an1 + an(j).ang + oan2 ' 肘を動かす
an3 = an2 + oan3
oan2 = an(j).ang
Case 3: an3 = an2 + an(j).ang + oan3 ' 手を動かす
oan3 = an(j).ang
End Select
0175あああ
02/06/14 21:18ID:MQwpPVXAx(1) = Cos(an1 * p) * sl: y(1) = Sin(an1 * p) * sl
x(2) = Cos(an2 * p) * el: y(2) = Sin(an2 * p) * el
x(3) = Cos(an3 * p) * hl: y(3) = Sin(an3 * p) * hl
' 線を描画
Line (x(0) + w, y(0) + h)-(x(1) + w, y(1) + h), QBColor(c)
Line -(x(2) + w + x(1), y(2) + h + y(1)), QBColor(c + 1)
Line -(x(3) + w + x(2) + x(1), y(3) + h + y(2) + y(1)), QBColor(c + 3)
j = j + 1
MsgBox "Push Next"
Loop
End Sub
■ このスレッドは過去ログ倉庫に格納されています