2011-10-27 8 views
1

私はオブジェクトと2つのGUIテクスチャボタンを持っています。左のボタンを押すとオブジェクトを左に、右のボタンを押しながらオブジェクトを左に回転させたいと思います。ボタンをクリックしてゲームオブジェクトを回転させる

アイデア?

オブジェクトをドラッグすると動作するスクリプトがあります。私は重要な部分を掲載します:

function Start() 
{ 
    var angles = transform.eulerAngles; 
    x = angles.y;  

    // Make the rigid body not change rotation 
    if (rigidbody) 
    rigidbody.freezeRotation = true;  
} 

function LateUpdate() 
{ 
    if (isMouseOverGuiTexture()) return; 

    if (target && Input.GetMouseButton(0)) 
    { 
     //0.1 represents the sensitivity of the mouse 
     x += Input.GetAxis("Mouse X") * xSpeed *0.1; //x rotation 
     //y -= Input.GetAxis("Mouse Y") * ySpeed *0.1; //y rotation 
     //y = ClampAngle(y, yMinLimit, yMaxLimit);     
     var rotation = Quaternion.Euler(y, x, 0); 
     var position = rotation * Vector3(0.900528, 8.829305, -distance+0.49548)+ target.position; 

     transform.rotation = rotation; 
     transform.position = position; 
    } 
} 
+0

どのようなAPIですか? javascriptのように見える? – trojanfoe

+0

unity 3dとコードはjavascriptです。 –

+0

私は自分の質問を編集し、その答えを追加しました。私が間違って何かをした場合は申し訳ありません。 –

答えて

0

(質問はコメントで答えQuestion with no answers, but issue solved in the comments (or extended in chat)を参照してください。)

ザ・OPが書いた:

var imageLeft: Texture2D; // drag the left button image here 
var imageRight: Texture2D; // right button image 
var speed: float = 60; // rotate speed in degrees per second 
private var rotLeft = false; // object rotates left if true 
private var rotRight = false; // object rotates right if true; 

function OnGUI() 
{ 
    rotLeft = GUI.RepeatButton(Rect(10,10,200,200), imageLeft); 
    rotRight = GUI.RepeatButton(Rect(230,10,200,200), imageRight); 
} 

function Update() 
{  
    if (rotLeft) transform.Rotate(0, -speed*Time.deltaTime, 0); 
    if (rotRight) transform.Rotate(0, speed*Time.deltaTime, 0); 
} 

は、私は次を使用して、それを解決しました

値がわからないTime.deltaTimeは内部にあると仮定しますOnGUI - それはshoul dは最後のOnGUIからの時間ですが、わかりません。問題を避けるために、私はUpdateに実際の回転を置き、OnGUIと通信するために2つの制御ブール値(rotLeftrotRight)を使用しました。

関連する問題