1.鼠標拖動物體Cube
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
///
/// 腳本掛到一個Cube上
///
public class Ts : MonoBehaviour
{
public Texture2D mouseTexture;//鼠標樣式紋理圖
public Vector3 mousePos;
void Start()
{
}
void OnMouseEnter()
{
//更換鼠標的樣式
Cursor.SetCursor (this.mouseTexture, Vector2.zero, CursorMode.Auto);
}
void OnMouseExit()
{
//恢復回鼠標的樣式
Cursor.SetCursor (null, Vector2.zero, CursorMode.Auto);
}
//通過鼠標拖動物體Cube
IEnumerator OnMouseDown()
{
mousePos = Input.mousePosition;
while (Input.GetMouseButton(0))
{
Vector3 offset = mousePos - Input.mousePosition;
//左右旋轉
transform.Rotate(Vector3.up * offset.x, Space.World);
//上下旋轉
transform.Rotate(Vector3.right*offset.y,Space.World);
mousePos=Input.mousePosition;
yield return null;
}
}
}
2.鼠標旋轉物體
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
///
/// 腳本掛到一個Cube上
///
public class Ts : MonoBehaviour
{
public Texture2D mouseTexture;//鼠標樣式紋理圖
public Vector3 mousePos;
void Start()
{
}
void OnMouseEnter()
{
//更換鼠標的樣式
Cursor.SetCursor (this.mouseTexture, Vector2.zero, CursorMode.Auto);
}
void OnMouseExit()
{
//恢復回鼠標的樣式
Cursor.SetCursor (null, Vector2.zero, CursorMode.Auto);
}
//通過鼠標移動物體Cube
IEnumerator OnMouseDown()
{
Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);//三維物體座標轉屏幕座標
//將鼠標屏幕座標轉爲三維座標,再計算物體位置與鼠標之間的距離
var offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));
print("down");
while (Input.GetMouseButton(0))
{
Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);
var curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;
transform.position = curPosition;
yield return new WaitForFixedUpdate();
}
}
}
3.鼠標拖動圖片
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
///
/// 腳本掛到一個Cube上
///
public class Ts : MonoBehaviour
{
public Texture2D mouseTexture;//鼠標樣式紋理圖
public Vector3 mousePos;
void Start()
{
}
void OnMouseEnter()
{
//更換鼠標的樣式
Cursor.SetCursor (this.mouseTexture, Vector2.zero, CursorMode.Auto);
}
void OnMouseExit()
{
//恢復回鼠標的樣式
Cursor.SetCursor (null, Vector2.zero, CursorMode.Auto);
}
//通過鼠標移動圖片
public void OnDrag(BaseEventData baseEventData)
{
PointerEventData data = baseEventData as PointerEventData;
var rt = data.pointerPress.GetComponent<RectTransform>();
Vector3 globalMousePos;
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rt, data.position, data.pressEventCamera, out globalMousePos))
{
rt.position = globalMousePos;
}
}
}
鼠標拖動圖片需要在Inspector視圖裏添加EventTrigger組件