Rotate object with mouse click or touch in Unity3D

Advertisemen

Part - 1
Part - 2
If you want to rotate an object, like wheel in unity3D.
For c#, go ahead and create c# script in unity and name it whatever you want then attached it to the object you want to rotate. Then, type following in the script.

using UnityEngine;
using System.Collections;

public class rotate : MonoBehaviour {
    private float baseAngle = 0.0f;

    void OnMouseDown(){
       Vector3 pos = 
Camera.main.WorldToScreenPoint(transform.position);
       pos = Input.mousePosition - pos;
       baseAngle = Mathf.Atan2(pos.ypos.x) * Mathf.Rad2Deg;

       baseAngle -= Mathf.Atan2(transform.right.ytransform.right.x*Mathf.Rad2Deg;
    }

    void OnMouseDrag(){
        Vector3 pos = 
Camera.main.WorldToScreenPoint(transform.position);
        pos = Input.mousePosition - pos;
        float ang = 
Mathf.Atan2(pos.ypos.x) *Mathf.Rad2Deg - baseAngle;
        transform.rotation = Quaternion.AngleAxis(angVector3.forward);
    }
}

For javascript, type followings.

#pragma strict
    private var baseAngle = 0.0;

    function OnMouseDown(){
       var pos = Camera.main.WorldToScreenPoint(transform.position);
       pos = Input.mousePosition - pos;
       baseAngle = Mathf.Atan2(pos.ypos.x) * Mathf.Rad2Deg;
       baseAngle -= Mathf.Atan2(transform.right.ytransform.right.x) *Mathf.Rad2Deg;
    }

    function OnMouseDrag(){
        var pos = Camera.main.WorldToScreenPoint(transform.position);
        pos = Input.mousePosition - pos;
        var ang = Mathf.Atan2(pos.ypos.x) *Mathf.Rad2Deg - 
baseAngle;
        transform.rotation = Quaternion.AngleAxis(angVector3.forward);
    }


It should do the magic.

Advertisemen

Disclaimer: Gambar, artikel ataupun video yang ada di web ini terkadang berasal dari berbagai sumber media lain. Hak Cipta sepenuhnya dipegang oleh sumber tersebut. Jika ada masalah terkait hal ini, Anda dapat menghubungi kami disini.

Tidak ada komentar:

Posting Komentar

© Copyright 2017 Tutorial Unity 3D