ページ 11

ワールド座標から画面座標への変換 ConvWorldPosToScreenPos()について

Posted: 2013年11月02日(土) 13:15
by カル
3次元上にある敵の座標EnemyPositionが、画面から消えた時の処理をしたく、下記のコードを作ってみたのですがイマイチうまく判定されません。

コード:

VECTOR ScreenPos = ConvWorldPosToScreenPos(EnemyPosition);
if(0.0f > ScreenPos.z || ScreenPos.z > 1.0f){
	if(0.0f> ScreenPos.x || ScreenPos.x > X_WINDOWSIZE){
		if(0.0f> ScreenPos.y || ScreenPos.y > Y_WINDOWSIZE){
//画面外に敵が居る!!
		}
	}
}
ちなみに、此方の敵が画面内に存在する、という判定は正常に判定できました。
もしかしたら表面化してないだけで画面外でも処理を行ってしまってるかもしれませんが・・・

コード:

VECTOR ScreenPos = ConvWorldPosToScreenPos(EnemyPosition);
if(0.0f < ScreenPos.z && ScreenPos.z < 1.0f){
	if(0.0f < ScreenPos.x && ScreenPos.x < X_WINDOWSIZE){
		if(0.0f < ScreenPos.y && ScreenPos.y < Y_WINDOWSIZE){
//画面内に敵が居る!!
		}
	}
}

Re: ワールド座標から画面座標への変換 ConvWorldPosToScreenPos()について

Posted: 2013年11月02日(土) 13:22
by h2so5
条件式がおかしいです。これだとx座標が画面外でもy座標が画面内にあると、敵が画面内にいるという判定になってしまいます。

Re: ワールド座標から画面座標への変換 ConvWorldPosToScreenPos()について

Posted: 2013年11月02日(土) 13:49
by カル
おお!条件式を1つにまとめてorでくっつけたらできました!
ありがとうございます!