RoboCodeというゲームのプログラミングなのですが、
以下のようなコードで特定の位置へ移動している途中に敵とぶつかったために
引っかかってしまって動けないことをonHitRobotで回避しようと思ったのですが
どうもonHitRobotイベントが発動しないようで
このようにwhileが動いている最中は他のイベントは発動しないのでしょうか?

■移動コード
double sx,sy,theta,degree,d;
// ターゲットの位置(T)の設定
double tx = 760;
double ty = 50;
// 現在のロボットの位置(S)の設定
sx = getX();
sy = getY();

while(sx != tx && sy != ty){

// ロボットをTの方向へ向ける
theta = calcDegree(sx, sy, tx, ty);
ShortTurn shortTurn = new ShortTurn(theta - getHeading());
degree = shortTurn.getDegree();
this.turnRight(degree);
// ロボットをTへ移動する
d = calcDistance(sx, sy, tx, ty);
this.ahead(d * shortTurn.getDirection());
// 現在のロボットの位置(S)の再設定
sx = getX();
sy = getY();}
■onHitRobotイベント
public void onHitRobot() {
ahead(-100);
}