Tag: mouse

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が後ろ向いている時のドラッグの挙動がおかしかったりしますが、まぁ・・・ね。

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

unityでマウスドラッグしてゲームオブジェクトを回転されるjavascript。
他のやり方もたくさんあるかと思いますが、紹介するやり方はマウスの左クリックを押した瞬間と左クリックを押している状態のメソッドを組み合わせた簡単なものです。これだけでも時間かかりましたが・・・。
[javascript]
var rotatetarget:Transform;
var xspeed:float = 100;
var yspeed:float = 100;

private var sx:float;
private var sy:float;
private var dx:float;
private var dy:float;
private var tx:float;
private var ty: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!
rotatetarget.Rotate( ty / yspeed , tx / xspeed , 0);
}
}[/javascript]

Input.GetMouseButtonDown(0)が左クリックを押した瞬間、Input.GetMouseButton(0)が押している状態です。

  • unityで実際に使用する時は、「project」ウィンドウで「Create」→「javascript」でスクリプトを追加し、上記のスクリプトをペーストして保存します。
  • 次に上部メニューから「GameObject」→「Create Empty」で空のGameObjectを追加し、そのGameObjectに先ほど保存したjavascriptをドラッグして追加してやります。
  • 最後にjavascriptの項目に「RotateTarget」があり、(none)となっている部分に回転されたいオブジェクトをドラッグします。

マウスmouseのドラッグdragでオブジェクトを回転rotateさせる

【サンプル】Unityでマウスドラッグしてオブジェクトを回転させる

あと上の図の「Xsped」と「Yspeed」を変えてやることでドラッグのスピードが変えられます。数値が高い方がゆっくりになります。
できれば@marupuraさんがこのスクリプト使ってもらって、ムキムキのモデルをグリグリしたい!

© 2017 UXIC.net

Theme by Anders NorenUp ↑