[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
相关文章
opengl 教程(3) 在窗口画三角形
原文地址:http://ogldev.atspace.co.uk/www/tutorial03/tutorial03.html       本教程内容很少,主要是在教程2基础上渲染一个三角形。
828 0
|
图形学
Unity的Shader如何控制投影颜色
细节慢慢补充,有几个需要注意的地方,必须要有接收投影的pass也就是Name是ShadowCollector的,必须添加#pragma multi_compile_fwdbase,物体的着色器必须有Tag 里面的 {"LightMode" = "ForwardBase"}。
|
10天前
|
图形学
Unity 获取鼠标位置下的UGUI或3D物体
本文总结了两种检测方法,分别用于UGUI和3D物体的检测。第一种方法`GetOverUIobj`专门用于检测鼠标悬停的UGUI元素,通过`GraphicRaycaster`实现。第二种方法`GetOverWordGameObject`则同时适用于UI和3D物体检测,利用`PhysicsRaycaster`进行射线检测。两者均返回悬停对象或null。
|
机器学习/深度学习 索引 Windows
【OpenGL】十七、OpenGL 绘制四边形 ( 绘制 GL_QUAD_STRIP 模式四边形 )
【OpenGL】十七、OpenGL 绘制四边形 ( 绘制 GL_QUAD_STRIP 模式四边形 )
488 0
【OpenGL】十七、OpenGL 绘制四边形 ( 绘制 GL_QUAD_STRIP 模式四边形 )
|
10天前
|
前端开发 图形学
unity UGUI跟随3D物体的坐标转换
在 Unity 中实现 UGUI 元素跟随 3D 物体,关键是将 3D 物体的世界坐标转换为屏幕或画布坐标。通过 Camera.WorldToScreenPoint 方法,可将 3D 物体位置映射到屏幕上,再更新 UGUI 元素的位置。代码示例展示了如何使用该方法,使 UGUI 图像跟随 3D 模型,并提供文字显示、图像和线条的显示/隐藏功能。
|
C# 图形学
【Unity】贝塞尔曲线关于点、长度、切线计算在 Unity中的C#实现
原文:【Unity】贝塞尔曲线关于点、长度、切线计算在 Unity中的C#实现 写在前面 最近给项目做了个路径编辑,基本思路是满足几个基本需求: 【额外说明】其实本篇和这个没关系,可以跳过“写在前面”这部分,跨到正文部分 编辑时: ① 随意增减、插入、删除路点,只要路点数量大于1,绘制曲线,曲线必定经过路点。
3390 0
|
6月前
|
测试技术 C# 图形学
Unity3D学习笔记10——纹理数组
Unity3D学习笔记10——纹理数组
72 0

热门文章

最新文章