[unity3d]屏幕坐标跟世界坐标的转换

简介: keep study very day!写写今天的学习收获,今天学习到了平面坐标跟世界坐标的相互转换。 效果:点击鼠标中键,创建一个小球,虽然看起来是屏面的,但实则是在三维空间里面创建的哦! 代码挂在摄像机上: using UnityEngine;using System.

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);
        }
    }
}

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/14498293

欢迎关注我的微博: http://weibo.com/u/2590571922
相关文章
|
3月前
|
测试技术 C# 图形学
Unity3D学习笔记10——纹理数组
Unity3D学习笔记10——纹理数组
48 0
|
编译器 API 图形学
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
151 0
MFC绘制二维图形【1】—— 使用映射模式函数自定义坐标系
MFC绘制二维图形【1】—— 使用映射模式函数自定义坐标系
351 0
MFC绘制二维图形【1】—— 使用映射模式函数自定义坐标系
十一、理解纹理坐标
纹理坐标就是纹理与图形的映射关系,图形中每个顶点都会关联一个纹理坐标,表示顶点需要从该位置读取纹理图像的数据。
458 0
十一、理解纹理坐标
|
图形学
【Unity3D Shader】学习笔记-渐变映射①
Gradient-Map(渐变映射)常用于Color Gradient颜色分级、颜色校正等。本篇主要用于将图像中的灰度范围映射到指定的渐变填充色中,通过渐变映射图来制作不同的效果。 通过修改不同的渐变映射纹理就可以获得不同的效果,好的的效果就需要根据场景制作特定的映射纹理进行调效果,Shader代码相对简单,在片段着色器中进行效果处理,
679 0
【Unity3D Shader】学习笔记-渐变映射①
|
机器学习/深度学习 索引 Windows
【OpenGL】十七、OpenGL 绘制四边形 ( 绘制 GL_QUAD_STRIP 模式四边形 )
【OpenGL】十七、OpenGL 绘制四边形 ( 绘制 GL_QUAD_STRIP 模式四边形 )
462 0
【OpenGL】十七、OpenGL 绘制四边形 ( 绘制 GL_QUAD_STRIP 模式四边形 )
|
vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity 屏幕坐标 和 世界坐标 之间相互转换
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
|
C#
WPF 颜色转换
原文:WPF 颜色转换 从字符串到画刷: var converter = new System.Windows.Media.BrushConverter(); var brush = (Brush)converter.
941 0
unity3dUGUI空对象实现射线检测
using UnityEngine; using System.Collections; namespace UnityEngine.UI { public class Empty4Raycast : MaskableGraphic ...
2448 0
|
C# Windows
WPF获取相对位置、坐标的方法
原文:WPF获取相对位置、坐标的方法 1.获取鼠标在控件中的坐标: 1 private void item_MouseDown(object sender, MouseButtonEventArgs e) 2 { 3 Point point = e.
2128 0