Unityでマウスドラッグしてオブジェクトを回転させるの改良版

以前のエントリーで「Unityでマウスドラッグしてオブジェクトを回転させる」を公開していたんですけど、マウスをドラッグしている時に常に動いてしまっていたし動きもなんかおかしかったので改良版を作りました。

前のscriptはRotateだったのをeulerAnglesに変更して、マウスのボタンを離した時(GetMouseButtonUp)にオブジェクトのeulerAnglesを変数に代入しています。(これだけでも自分には大変)

[javascript]
var rotatetarget:Transform;
var xspeed:float = 1;
var yspeed:float = 1;

private var sx:float;
private var sy:float;
private var dx:float;
private var dy:float;
private var tx:float;
private var ty:float;

private var RotateVectorX:float;
private var RotateVectorY:float;
private var CashRotateVectorX:float;
private var CashRotateVectorY:float;

function Update() {

//Start
if(Input.GetMouseButtonDown(0)) {
//Input Mouse position
sx = Input.mousePosition.x;
sy = Input.mousePosition.y;

}

//Drag
if(Input.GetMouseButton(0)) {
dx = Input.mousePosition.x;
dy = Input.mousePosition.y;

tx = sx – dx;
ty = sy – dy;

//Rotate!
RotateVectorX = tx / xspeed;
RotateVectorY = ty / yspeed;
rotatetarget.eulerAngles = Vector3( CashRotateVectorY + RotateVectorY , CashRotateVectorX + RotateVectorX , 0);

}

//End
if(Input.GetMouseButtonUp(0)) {
//Input Object position
CashRotateVectorY = rotatetarget.eulerAngles.x;
CashRotateVectorX = rotatetarget.eulerAngles.y;

}
}
[/javascript]

それでもObjectが後ろ向いている時のドラッグの挙動がおかしかったりしますが、まぁ・・・ね。

5 Comments

  1. ありがとうございます。参考になりました。
    参考にドラッグをして物体を移動するのをつくろうと思います。
    そういえば「OnMouseDown()」はなくなったのでしょうか?機能しません。
    iPhoneのタッチ版も期待します。

  2. uxic

    2011年8月22日 at 2:28 AM

    コメントありがとうございます。気付かなくって申し訳ないです。

    OnMouseDown()は無くなっていないはずですよ。
    function OnMouseDown() {〜からなら動作するはずです。
    もしかするとif()の中に入れていませんか?

    あとiphoneは持っていないので未確認ですができると思いますよ。
    Androidはできました。(Galaxy Tabで確認済み)

  3. GameObject自身にアタッチして行ってなかったからでした。

    this.transform.rotation.x = hoge;
    this.transform..eulerAngles.x = hoge;
    this.transform.Rotate.x = hoge;

    未だにこれらの違いが理解できません・・

  4. あ、this.transform.Rotate.x = hoge;これは間違えです
    this.transform.Rotate(hoge, 0, 0);です

  5. uxic

    2011年9月13日 at 11:32 PM

    >shinriyoさん

    そうなんですよ〜。
    実はtransform.rotationはよくわかっていません。(ノД`) ので使ってません。

    3Dの場合はローカルとワールドとかもあるので色々と混乱しますよね。
    お互い頑張りましょう〜。

コメントを残す

Your email address will not be published.

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2018 UXIC.net

Theme by Anders NorenUp ↑