2014-07-08 1 views
0

예상대로 작동하지 + XNA는운영 행동은 내가 조종 AI에 대해 다음 페이지를 읽고 있어요

내 코드는 다음과 같습니다

Sub AI() 
Dim circleRadius As Single = 6.0F 
Dim wanderAngle As Single = 0.0F 
Dim wanderChange As Single = 1.0F 
Dim enemySpeed As Single = 0.3F 
Dim enemyPosistion As Vector2 = (1,1) 
Dim circleMiddle As Vector2 = enemyPosistion 
circleMiddle.Normalize() 

circleMiddle = Vector2.Multiply(circleMiddle, circleRadius) 

Dim wanderForce As New Vector2 
wanderForce = Vector2.Normalize(wanderForce) * 3 ' Set length of vector 
wanderForce = AngleToVector(wanderAngle) 
Randomize() 
wanderAngle += Rnd() * wanderChange - wanderChange * 0.5 
Dim force As New Vector2 
force = Vector2.Add(circleMiddle, wanderForce) 
enemyPosistion += force * enemySpeed 
End Sub 

Private Function AngleToVector(angle As Single) As Vector2 
    Return New Vector2(CSng(Math.Sin(angle)), -CSng(Math.Cos(angle))) 
End Function 

내가, 내가 Vector2.Zero에 enemyPosistion을 설정하여 간단한 실수를 실현하는 대신 내가 (1,1)을로 설정 그것은 적을 오른쪽 위로 움직이게합니다.

https://www.youtube.com/watch?v=UZubNaEA9W0

이 그것이 무엇을해야하는지의 라인을 따라 더 : 나는 비디오를 포함했다

https://www.youtube.com/watch?v=1wfgPCMdW2U

사람이 내가 잘못 뭘하는지 말해 줄래?

+0

구성 요소의 값이 산술에서 기대하는 값인지 확인하기 위해이 코드를 단계별로 실행 해 보았습니까? 길이가 0 인 벡터를 정규화하면 최종 적 위치를 뒤엎을 수있는 NaN이 발생합니다. –

+0

@SteveH 내 OP를 업데이트했습니다. 이로 인해 오류가 발생했습니다. 그러나 그것은 내가 원하는 것처럼 여전히 작동하지 않습니다. – SCGB

+0

프레임 전체에 걸쳐 일부 상태를 보존해야합니다. 적어도 "wanderAngle"과 "velocity"벡터. 게임 시작시'Randomize()'를 한 번만 호출하십시오. 'circleMiddle'은'velocity * circleRadius' 여야합니다. 'velocity'는 마지막에'circleMiddle + wanderForce'와'enemyPosition + = velocity * enemySpeed'로 업데이트되어야합니다. 솔직히이 전체 코드는 약간 이상하게 보입니다. 물리적 인 개념이 섞여 있습니다. 힘은 신체의 가속도 (질량과 함께)에 영향을 미치고, 가속도는 속도에 영향을 주며 (시간 단계와 함께) 속도는 위치에 영향을줍니다 (시간 단계와 함께). –

답변

0

프레임 전체에 걸쳐 일부 상태를 보존해야합니다. 적어도 wanderAngle과 속도 벡터. 게임 시작시 Randomize()를 한 번만 호출하십시오. circleMiddle은 velocity * circleRadius 여야합니다. 속력은 마지막에 circleMiddle + wanderForce 및 enemyPosition + = velocity * enemySpeed로 업데이트해야합니다. 솔직히이 전체 코드는 약간 이상하게 보입니다. 물리적 인 개념이 섞여 있습니다. 힘은 신체의 가속도 (질량과 함께)에 영향을 미치고, 가속도는 속도에 영향을 주며 (시간 단계와 함께) 속도는 위치에 영향을줍니다 (시간 단계와 함께). - Nico Schertler

관련 문제