シナリオ: 特定の速度でオブジェクトをプレーヤーに追従させたい。オブジェクトをプレーヤーに追従させるコードを作成しました (動作します)。オブジェクトをプレーヤーに追従させるために、オブジェクトがどちら側にあるかを確認し、それに応じて、その方向に移動するために x 値と y 値に影響を与える必要がある速度を計算します。
問題: プレイヤーが Ai を回避しようとすると、Ai はプレイヤーに到達するために鋭く曲がります。私が欲しいのは、ターンをあまり鋭くせず、代わりに広いターンにするものです。
質問は?問い合わせてください!
私のコード:
public void facePlayer(){
double division = (double)Math.abs(player.getY() - enemyy) / Math.abs(player.getX() - enemyx);
dir = Math.atan(division);
dir = lerp(dir,division,spd);
if (enemyx >= player.getX() && enemyy <= player.getY()) {
enemyx -= (spd * Math.cos(dir));
enemyy += (spd * Math.sin(dir));
}
//if Coin is top left
if (enemyx >= player.getX() && enemyy >= player.getY()) {
enemyx -= (spd * Math.cos(dir));
enemyy -= (spd * Math.sin(dir));
}
//if Coin is bottom right
if (enemyx <= player.getX() && enemyy <= player.getY()) {
enemyx += (spd * Math.cos(dir));
enemyy += (spd * Math.sin(dir));
}
//if Coin is bottom left
if (enemyx <= player.getX() && enemyy >= player.getY()) {
enemyx += (spd * Math.cos(dir));
enemyy -= (spd * Math.sin(dir));
}
}