這裏的腳本要實現的功能是在角色選擇界面,
人物3D模型自動旋轉,然後鼠標在角色身上向左拖拽,角色往左旋轉;
向右拖拽,角色向右旋轉,拖拽后角色旋轉方向與退出拖拽時,
鼠標的移動方向一致。單擊人物則停止旋轉。
下面是腳本,這裏不作過多解釋:
using UnityEngine;
using System.Collections;
public class OnCharacterClick : MonoBehaviour {
Vector3 preMousePos,downPos;
float rotateDir=1;
bool dragging;
public float rotateSmoothing;
// Use this for initialization
void Start () {
InvokeRepeating("detectMousePos",0.1f,0.1f);
}
void detectMousePos()
{
preMousePos = Input.mousePosition;
}
// Update is called once per frame
void Update () {
if (!dragging)
{
transform.Rotate(transform.up,rotateDir*rotateSmoothing);
}
}
void OnMouseDrag()
{
dragging = true;
//當值小於0,說明鼠標向左拖,否則相反
float dragDeltaX=Input.mousePosition.x - preMousePos.x;
transform.Rotate(transform.up,dragDeltaX*3600000);
}
void OnMouseDown()
{
downPos = Input.mousePosition;
}
void OnMouseUp()
{
float deltaX=Input.mousePosition.x-downPos.x;
if (Mathf.Abs(deltaX)>0.2)
{
if (deltaX < 0)
{
rotateDir = 1;
}
else
{
rotateDir = -1;
}
dragging = false;
}
}
}
將其放到角色身上,設置公有屬性即可。
然後角色身上的rigidBody記得設置如下
如果你腳本要放的物體是NGUI的子物體,也就是說他的
transform.root是UIRoot的,因爲Unity的鼠標事件在NGUI
不響應了,那麼程序要稍作修改:
using UnityEngine;
using System.Collections;
public class RotateSelf : MonoBehaviour {
Vector3 preMousePos, downPos;
float rotateDir = 1;
bool dragging;
public float rotateSmoothing;
// Use this for initialization
void Start()
{
InvokeRepeating("detectMousePos", 0.1f, 0.1f);
}
void detectMousePos()
{
preMousePos = Input.mousePosition;
}
// Update is called once per frame
void Update()
{
if (!dragging)
{
transform.Rotate(transform.up, rotateDir * rotateSmoothing);
}
}
void OnDrag()
{
//當值小於0,說明鼠標向左拖,否則相反
float dragDeltaX = Input.mousePosition.x - preMousePos.x;
transform.Rotate(transform.up, dragDeltaX * 3600000);
}
void OnPress(bool isDown)
{
if (isDown)
{
dragging = true;
downPos = Input.mousePosition;
}
else
{
float deltaX = Input.mousePosition.x - downPos.x;
if (Mathf.Abs(deltaX) > 0.2)
{
if (deltaX < 0)
{
rotateDir = 1;
}
else
{
rotateDir = -1;
}
dragging = false;
}
}
}
}
或者直接不需要自動旋轉,可以使用NGUI提供的
Spin With Mouse腳本,它提供了鼠標拖拽繞Y軸旋轉的功能。
或者如果只需要旋轉可以使用transform的raotation的Animation。
最後大家有什麼好的腳本歡迎分享出來共同進步!