using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
//3D世界坐标系中的参考游戏对象
public GameObject cube;
//场景中主摄像机
private Camera _camera;
//屏幕坐标
private Vector3 screenV;
void Start()
{
//保存当前的主摄像机
_camera = Camera.main;
//世界坐标转换为屏幕坐标
screenV = _camera.WorldToScreenPoint(cube.transform.position);
}
void Update()
{
//鼠标点击事件
if (Input.GetMouseButtonDown(0))
{
//鼠标点击位置
Vector3 dianV = Input.mousePosition;
//将参考的3D世界物体的z值赋值给鼠标点z
dianV.z = screenV.z;
//通过系统提供的方法想屏幕点转成世界点
Vector3 wv = _camera.ScreenToWorldPoint(dianV);
//将屏幕点转成世界点,赋值给cube,实现点击位置在哪,cube移动到该位置
cube.transform.position = wv;
}
}
}
将屏幕点转成世界坐标点ScreenToWorldPoint,比之前给大家说的通过视口坐标系要简单点
世界坐标转屏幕坐标:
Vector3 screenPos = Camera.main.WorldToScreenPoint(pos);
屏幕坐标转世界坐标:
Vector3 worldPos = Camera.main.ScreenToWorldPoint(pos);