今までturn()が効かないと言っていましたが、そもそもforward()で車両は進んでいるのではなく、エージェントの現在地を算出してy軸を更新していることがわかりました。そこでざっくりした説明で申し訳ないのですがy軸方向のみで運動しているエージェントに対してある地点(x,y)でX軸の更新に切り替えるようにしたいのですがこれはフラグを作成すればよいのでしょうか?また作り方がわからないため教えていただきたいです。
以下Y軸更新のプログラム
If My.方向 == 1 Then
My.Y = My.Y - changeDistance
End If
If My.方向 == 3 Then
My.Y = My.Y + changeDistance
End If
ご返信ありがとうございます。私もプログラムを見ていて、よくわからないところもあったため整理すべきだとおもいます。
質問ですが、もし場合分けをした際には一応このままのプログラミングでもx軸を移動させることは可能なのでしょうか?
また、forwardXや、forwardYを用いた場合にもそのエージェントがゆっくり加速したり、減速したりという挙動をさせることはできるのでしょうか?
my.方向といい、changedistanceといい、その変数の命名方式やその存在意義に疑問を覚えます。何故その変数を置いているのかを見直して全体的な補修をすべきかと思われます。
例えば、my.現在地(X)という変数ですが、存在意義が分かりません。前方などを探索する為に移動した際等元の値を取っておきたいのであれば別ですが、そのような処理も見当たりません。単純にここら辺を整理すれば必要ない処理だと思われます。
質問への答えですが、そのような処理を行いたいのであれば、場合分けすれば可能であろうが、以上のような構造上の奇妙な部分を整理(リファクタリング)すれば必要ないと思われます。
参考としてforward()にはXY座標上の移動をするforwardX(),forwardY()があります。