欢迎光临散文网 会员登陆 & 注册

unity小技巧:实现拖拽三维物体效果

2023-07-24 14:49 作者:尘风一枚  | 我要投稿

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class MoveWorldBlockManager : MonoBehaviour

{


private IEnumerator OnMouseDown()

{

//将三维物体坐标转换成屏幕坐标

Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);

//鼠标屏幕坐标

Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);

//将鼠标屏幕坐标转换成三维坐标

Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace);

//计算物体位置与鼠标之间的距离

Vector3 offset = transform.position - mouseWorldPosition;

//提前定义好返回值

var cs = new WaitForFixedUpdate();

//当按下鼠标左键时

while (Input.GetMouseButton(0))

{

//更新鼠标屏幕坐标

currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);

//将鼠标屏幕坐标转换成三维坐标

mouseWorldPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace);

//移动物体坐标

Vector3 currentPosition = mouseWorldPosition + offset;

//将物体坐标设置成移动后的坐标

transform.position = currentPosition;

//返回 (只有当下一次fixedUpdate开始时再执行后续代码)

yield return cs;

}


}


}

unity小技巧:实现拖拽三维物体效果的评论 (共 条)

分享到微博请遵守国家法律