老外原版, 简明的先来一个
出处 : 翻墙看吧 Unity tutorial : rotate an object with mouse or touch in 3d
using UnityEngine;
using System.Collections;
public class ouyangRotObj : MonoBehaviour {
float rotSpeed = 100;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnMouseDrag()
{
float rotX = Input.GetAxis ("Mouse X") * rotSpeed * Mathf.Deg2Rad;
float rotY = Input.GetAxis ("Mouse Y") * rotSpeed * Mathf.Deg2Rad;
transform.Rotate (Vector3.up, -rotX);
transform.Rotate (Vector3.right, -rotY);
// transform.RotateAround (Vector3.up, -rotX);
// transform.RotateAround (Vector3.up, rotY);
}
}
国内半截文章, 搞不懂怎么运行, 留个案底,有时间看:
using UnityEngine;
using System.Collections;
public class ouyangMoveMode : MonoBehaviour {
public float speed = 20.0F;
private float flag;
private bool bRotate;
// Use this for initialization
void Start () {
bRotate = false;
}
// Update is called once per frame
void Update () {
// 这里乘以Time.deltaTime 函数是为了使旋转效果更加平滑。
flag = Input.GetAxis("Mouse X");
if (Input.GetKey("left")){
this.transform.Rotate(Vector3.up*Time.deltaTime*-speed);
}
if (Input.GetKey("right")){
this.transform.Rotate(Vector3.up*Time.deltaTime*speed);
}
}
void OnGUI(){
if(Event.current.type == EventType.MouseDrag){
if(bRotate){
transform.Rotate(new Vector3(0, -Input.GetAxis("Mouse X"), 0)*speed);
}
}
}
void OnMouseEnter(){
clickObj scriptObj = (clickObj)gameObject.GetComponent("clickObj");
bool bFlag = clickObj.bDrag;
if(!bFlag)
bRotate = true;
// print("Enter in horse model");
}
void OnMouseExit(){
bRotate = false;
// print("Exit horse area");
}
void OnCollisionEnter(){
print("On collision enter");
}
void OnTriggerEnter(){
print("On trigger enter");
}
}