更多教程请访问:
keep study very day!写写今天的学习收获,今天学习到了平面坐标跟世界坐标的相互转换。
效果:点击鼠标中键,创建一个小球,虽然看起来是屏面的,但实则是在三维空间里面创建的哦!
代码挂在摄像机上:
using UnityEngine;
using System.Collections;
public class cameramove : MonoBehaviour
{
private Vector3 world;
private float speed = 0;//物体移动的速度
// Use this for initialization
void Start()
{
world.x = -2;
world.y = 0;
world.z = 6;
}
// Update is called once per frame
void Update()
{
Vector2 screenpos = Camera.main.WorldToScreenPoint(transform.position);//物体的世界坐标转化成屏幕坐标
Vector3 e = Input.mousePosition;//鼠标的位置
//当点击鼠标中键时
if (Input.GetMouseButtonDown(2))
{
//e.z=screenpos.z;//1.因为鼠标的屏幕 Z 坐标的默认值是0,所以需要一个z坐标
//e.z=1;//将鼠标
//摄像机要垂直于x-z平面
//world=Camera.main.ScreenToWorldPoint(e);
world = new Vector3(Input.mousePosition.x/Screen.width,Input.mousePosition.y/Screen.height,106f );
Vector3 world1= Camera.main.ViewportToWorldPoint(new Vector3(world.x, world.y, 106f));
//world.x = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
//world.z = Camera.main.ScreenToWorldPoint(Input.mousePosition).y;
//world.y = transform.position.y;
print("new x:" + world.x);
print("new y:" + world.y);
print("new z:" + world.z);
//创建物体
//GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Sphere);
//goNew.transform.position = world1;
transform.LookAt(world1);
}
}
}
Unity QQ群:858550 cocos2dx QQ群:280818155
====================== 相互学习,共同进步 ===================
欢迎关注我的微博:http://weibo.com/u/2590571922
标签:unity3d,Vector3,世界坐标,new,Camera,world,Input,屏幕,main From: https://blog.51cto.com/dingxiaowei/6458261