3D空間における移動制御

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
icon00

3D空間における移動制御

#1

投稿記事 by icon00 » 12年前

JavaScriptをつかってUNITYでアクションパズルゲーム作ってます。

移動制御について質問させていただきます。

言葉では説明しづらいのですが

コード:

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();	
    }
}

とまあ、要するにアクションパズルゲームをつくる関係上、Playerはマスからはみ出てほしくない、かつ1マスごとの移動ではなくKey長押しにも対応してほしいというわけです

ここで問題が

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をもらってきて~なんて事も考えたのですが...上手くいくかどうか検証してないのでなんとも...

みなさんどうかアドバイスよろしくお願いします。

icon00

Re: 3D空間における移動制御

#2

投稿記事 by icon00 » 12年前

追記

今確認したら、スタート地点からxに進んでも正しく進まなくなりました

(4とか12とか中途半端に止まる)

閉鎖

“C言語何でも質問掲示板” へ戻る