首页 > 其他分享 >[unity3d]屏幕坐标跟世界坐标的转换

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

时间:2023-06-11 17:03:03浏览次数:47  
标签:unity3d Vector3 世界坐标 new Camera world Input 屏幕 main


更多教程请访问:

http://dingxiaowei.cn/

 

keep study very day!写写今天的学习收获,今天学习到了平面坐标跟世界坐标的相互转换。

效果:点击鼠标中键,创建一个小球,虽然看起来是屏面的,但实则是在三维空间里面创建的哦!

[unity3d]屏幕坐标跟世界坐标的转换_鼠标中键

代码挂在摄像机上:

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

相关文章

  • Unity3D:Project窗口
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生Project窗口“项目”窗口显示与项目相关的所有文件,是您在应用程序中导航和查找资源和其他项目文件的主要方式。默认情况下,当您启动新项目时,此窗口处于打开状态。但是,如果找不到它,或者它已关闭,您可以通过“常规>......
  • RK3588-MIPI屏幕调试笔记:RK3588-MIPI-DSI
    一.简介本文是基于RK3588平台,MIPI屏调试总结。二.MIPI屏幕调试2.1调试总览,调试步骤分析步骤①先将背光点亮步骤②根据屏幕的规格书配置dsi1_panel节点步骤③打开对应的dsi节点,开机logo步骤④编译烧写,调试屏幕2.2DTS配置#include"rk3588-evb.dtsi"//引用了dsi1_......
  • div元素自适应屏幕大小
    简单介绍一下实现方式(结尾处有代码)1.首先创建一个根元素,将这个跟元素宽高设置为100%,当然,用100vw、100vh也可以,并且将根元素设置为相对定位。2.再创建我们要实现自适应大小的元素,自适应元素我们要给固定的宽高。可以按照常见的屏幕分辨率赋值,1920*1080或者2560*1440。(注:至于为什......
  • 手机屏幕PPI
    PPI:PixelsPerInch缩写,表示每英寸对角线上所拥有的像素(pixel)数目PPI达到一定数值时,人眼就分辨不出颗粒感了。PPI=(X2+Y2)1/2/Z   X代表水平方向的pixel个数,Y代表竖直方向pixel的个数,Z代表屏幕的尺寸,通过量测可得到一般当屏幕的尺寸规格已经定好了,PPI大小就受限于像素工......
  • el-aside无法铺满屏幕
    第一步:在App.vue中写入样式<stylescoped>#app{position:absolute;top:0;left:0;width:100%;height:100%;}</style>第二步:调节el-aside样式(注意如果没有背景色的话,看起来还是没有铺满)<stylescoped>.el-aside{height:100vh;}</style>第三步:第二步的......
  • YOLOV5实时检测屏幕
    YOLOV5实时检测屏幕目录YOLOV5实时检测屏幕思考部分先把原本的detect.py的代码贴在这里分析代码并删减不用的部分把屏幕的截图通过OpenCV进行显示写一个屏幕截图的文件用OpenCV绘制窗口并显示最终代码注:此为笔记目的:保留模型加载和推理部分,完成实时屏幕检测实现思路:1.写一......
  • 如果关闭windows屏幕广告
    windows锁屏广告怎么关?右上角的推广广告,如何关闭呢?进入设置,个性化,锁屏设置欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。文章来源:刘俊涛的博客若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)......
  • unity3d 不销毁物品
    在游戏中,经常需要用到一个类似于static的功能,想要一个参数一直使用,如生命值、登陆状态等。方案一使用static,如在gamemanager脚本中设置publicstaticboolis_login=false;在其他脚本中,不需要gameobject,直接调用脚本即可boolget=gamemanager.is_login;但是缺点是,只......
  • Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏
    项目场景:用Unity做的app发布的ios和Android版本,ui做屏幕自适应,来适配多机型,unity版本是2019.4,用的UGUI。问题描述:极个别机型有个偶发的问题,就是在app息屏,再开屏的时候,会出现半边屏幕被压缩,半边屏幕黑屏的问题,但是ui交互的位置还是正常的,bug效果图如下:跟这张图一样的<hrstyle="bor......
  • 大屏幕适配小屏幕
    <metaname="viewport"content="width=device-width,initial-scale=1.0,user-scalable=no"><script>vartid,doc=document,docEl=doc.documentElement;varrefreshRem=function(){......