移動制御について質問させていただきます。
言葉では説明しづらいのですが
var vz:int = 0;
var isMoving : boolean = false;
var SIZE:int = 10;
var SPEED:float = 0.5f;
function onEnterFrame(){
if (isMoving){
transform.Translate(0,0,vz);
if (vz && transform.position.x % SIZE == 0) isMoving = false;
if (vz && transform.position.y % SIZE == 0) isMoving = false;
if (vz && transform.position.z % SIZE == 0) isMoving = false;
else{
vz = 0;
//transform.Translate(0,0,vz);
if(Input.GetKey(KeyCode.UpArrow)) vz = SPEED;
if(vz)
{
isMoving = true;
onEnterFrame();
}
}
ここで問題が
1.z方向には正しく進めるのですが、x方向には正しく進まない。
2.positionが-値の時、止まらなくなる
ちなみにここには載せていませんが、PlayerはFPSのように向いている方の正面にのみ進めます。(zしかいじっていないのはそのため)
1.はなぜかz方向にのみ進んだつもりでも ( transform.Translate(0,0,vz) ) xにわずかに値が入るせい(0.1~1くらいの乱数)と思われる
(スタート地点からxに進めば正しく進める)
原因不明です
2.はステージのpositionを0以上にしておけばいい?
みなさんならどう対処しますか?根本から書きなおしたほうが良いのでしょうか?
一応Rayでも飛ばして真下のブロックのpositionをもらってきて~なんて事も考えたのですが...上手くいくかどうか検証してないのでなんとも...
みなさんどうかアドバイスよろしくお願いします。