Unity 坐标】的更多相关文章

在制作游戏中我们经常会遇到这样一个需求: 在人物模型的上面显示 名字.称号 一类的文字或者图片 如下图 人物模型属于是Camera1   UI Title信息属于NGUI Camera2 如下图 这时候我们就要用到坐标转换了 确定UI Title 的世界坐标 代码如下: Transform charater = null;//角色Transform Transform TitleLabel = null;//Title Label Transform Camera camera1 = Camer…
一. transform.position 世界坐标 transform.localposition 相对于父亲的坐标 二. 三.应用 1.物体跟随鼠标 Vector3 screenPos = Camera.main.WorldToScreenPoint(obj.transform.position); // 目的获取z,在Start方法 Vector3 mousePos = Input.mousePosition; mousePos.z = screenPos.z; // 这个很关键 Vect…
射线在unity中是个很方便的东西,对对象查找.多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等提供了很大的帮助,在此做个总结与大家分享下 ,若有不足欢迎吐槽 好了,话补多说啦,直接进入主题: 射线:在unity中射线是由一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 . 相关API: 1.Ray Camera.main.ScreenPointToRay(Vector3 pos) 返回一条射线Ray从摄像机到屏幕指定一个点2.Ray Camera.ma…
本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大渲染测试 混合 CPU.GPU.图形接口和驱动的关系 CPU和GPU之间的通信 CPU和GPU并行工作的秘密:命令缓冲区 显示流畅的方法 着色器语言 ShaderLab Shader选用 顶点片元着色器 Unlit Shader 结构 一个简单的Shader 库文件 调试 注意点 3D数学 空间 渲…
简介 前一篇介绍了如果编写最基本的shader,接下来本文将会简单的深入一下,我们先来看下效果吧 呃,gif效果不好,实际效果是很平滑的动态过渡 实现思路 1.首先我们要实现一个彩色方块 2.让色彩动起来 over 实现一个RGB CUBE 先看代码吧: Shader "LT/Lesson2" { Properties { _OffsetX ("Offset X", Range (-1.5, 1.5) ) = 0 _OffsetY ("Offset Y&q…
C#基础教程 第一章       C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序.当然仅靠一章的内容就完全掌握C#语言是不可能的,如需进一步学习C#语言,还需要认真阅读有关C#语言的专著. 1.1      C#语言特点 Microsoft.NET(以下简称.NET)框架是微软提出的新一代Web软件开发模型,C#语言是.NET框架中新一代的开发工具.C#语言是一种现代.面向对象的语…
Unity 版本:4.5 NGUI版本:3.6.5 参考链接:http://game.ceeger.com/Script/Camera/Camera.ScreenPointToRay.html,Uniyt圣典   http://www.unitymanual.com/blog-4392-1229.html,作者:游戏蛮牛 han1127   http://www.cnblogs.com/alongu3d/archive/2013/01/05/raycast1.html,博客园 梦想之家 1.3D…
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ========================================== 题外话 新年第一篇!在此就献给了这个系列.马上就可以放假回家了,虽然还有一些事情需要处理,但是能和家…
在PostImage中经常会用到物体本身的位置信息,但是Image Effect自身是不包含这些信息的,因为屏幕后处其实是使用特定的材质渲染一个刚好填满屏幕的四边形面片(四个角对应近剪裁面的四个角).这篇文章主要介绍几种在Image Effct shader中还原世界坐标的方式.这个问题在<Shader入门精要>中也做了描述,这里可能偏重于个人的一些疑惑. 这篇文章相关的两外两篇文章: Unity Shader 基础(3) 获取深度纹理 Unity Shader 基础(2) Image Eff…
http://blog.sina.com.cn/s/blog_427cf00b0102vp0j.html 之前在做连连看游戏中,也用到贴图坐标,当时我们讲到,不管是平铺(Tiling)还是偏移(Offset),我们参考的基准都是原始的那张图,Tiling配合Offset,Tiling负责截取,Offset负责移动,最终实现截取贴图的任一部分​,但是这种方法弄出的图形形状都是方块的,无法实现任意的贴图 而下面要讨论的方法和上面的方法会大不一样,会从UV坐标的角度去讨论,从而实现想怎么贴就怎么贴的效…
public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint); rect: 对应的 RectTransform 的引用screenPoint: 位置,基于屏幕坐标系cam: 相机的引用,如果Canvas的Render Mode 为 Screen Space - Camera 模式,则需要填入 Ren…
分为三个地方讲解. NDC(Normalize Device Coordinates)归一化的设备坐标 NDC坐标是世界空间坐标通过MVP变换之后再进行归一化得到的坐标.只需要再一步变换就能得到屏幕空间坐标.顺便提一下因为已经归一化了,如果需要从NDC坐标还原成世界坐标,需要注意最后除w分量. 何为线性何为非线性 正交投影得到的深度是线性的,而透视投影得到深度是非线性的. 所谓线性,就是指变化曲线的一阶导数为常量,也就是说变化量是恒定的.既然变换是恒定的,即深度z的采样点在[-1,]1之间均匀分…
[Unity3D的四种坐标系] 1.World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的.transform.position可以获得该位置坐标. 2.Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的.注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得该位置坐标,手指触摸屏幕也为屏幕…
设a为主动物体,b为跟随物体. 如果a,b都在同一个Update里更新坐标,那么两者自然是同步的. 如果a在a.Update里更新位置,而b在b.Update里将自己的位置更新为与a相同,那就会有误差. 而且即使a的运动非常缓慢平滑,b也会出现到处乱闪的情况(总之不是我们臆想得那样,b至多比a延迟一些而不会发生突变). 解决办法是不在b.Update中同步位置,而是在b.LateUpdate中同步位置,这样就一点儿误差也没有了. 另外注意,这里a,b都是指普通物体.如果a或b是摄像机,还没研究过…
用PUN插件的话,就在OnJoinedRoom()回调函数里,表示加入房间,可以实例化角色,GameObject go=PhotonNetwork.Instantiate(prefabPlayer.name, new Vector3(241,0.2f,253), Quaternion.identity, 0);这里的prefabPlayer需要放在Resources文件夹里. prefabPlayer上加上一个PhotonView组件, 为了同步在角色坐标,这里需要一个回调函数, void On…
世界=>本地 public GameObject mTarget; public GameObject mPar; //这个注意一定要是mTarget的第一父物体. // Use this for initialization void Start () { string tarStr = string.Format("mtarget local:{0},world:{1}", mTarget.transform.localPosition, mTarget.transform.…
2种方法: 1. 使用 VPOS 或 WPOS语义,如: Shader "Test/ScreenPos1" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag struct appdata { float4 pos : POSITION; }; struct v2f { float4 pos : SV_POSITION; }; v2f vert (appdata v) { v2f o; o.p…
1.物体的局部坐标的方向(物体自身的方向) transform.forward. transform.right. transform.up 2.物体的世界坐标的方向 Vector3.forward. Vector3.right. Vector3.up 例子: 子弹沿自身坐标轴的Z轴方向运动 Vector3 v = this.transform.forward * this.speed; this.body.velocity = v; 注意: 父节点在Scene视图中显示出来的位置并非真正的In…
屏幕坐标:左下角为原点. void Update(){ // 获取物体的屏幕坐标,世界坐标->屏幕坐标 Vector3 screenPos = Camera.main.WorldToScreenPoint(cube.position); Debug.Log("x = " + screenPos.x + ", y = " + screenPos.y + ", z = " + screenPos.z); } 拖动物体观察打印结果可知:z值是物体…
void Start () { var pgo = transform.Find ("Button").gameObject; obtn = Instantiate (pgo); //obtn = Instantiate (pgo, pgo.transform.Parent);         var pos = obtn.transform.position; //obtn.transform.localPosition = Vector3.zero; Debug.LogFormat…
之前写了一篇关于在物体头顶上显示名字的随笔. 估计难懂的点就在各种坐标的转换. 这里详细(就我这水平,怎么可能详细~~~)解说一下.额............. 用另一种方式举个栗子吧. 还是实现在物体的头顶或某个部位显示UI并跟随物体的移动改变位置. 先把栗子端上来: public Transform Boy;//帅帅的主角 public Transform UI;//对主角死缠烂打的UI君 Camera cam;//主相机 void Update () { UI.localPosition…
Vector3 pos=Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); 类似的鼠标点击Camera.main.ScreenToWorldPoint(Input.mousePosition)…
获取当前鼠标position:Input.mousePosition;…
List<Transform> objs = new List<Transform>(); for (int i = 0; i < transform.childCount; i++) { objs.Add(transform.GetChild(i)); } objs.Sort(delegate(Transform x, Transform y) { return x.position.y.CompareTo(y.position.y); });…
Properties { _R(,)) = 1.0 _ColorTex("ColorTex (RGB)", 2D) = "red" {} struct Input { float2 uv_MainTex; float3 worldPos; //float4 modelPos_; float2 latlon; float2 uv_ColorTex;//这里一定要注意必须uv_开头,并且后面接Properties中定义的纹理名_ColorTex }; fixed4 co…
using System.Collections; using UnityEngine; using UnityEngine.UI; public class TextMoveHelper : MonoBehaviour { public Text textComp; public Canvas canvas; public Text text; public Vector3 GetPosAtText(Canvas canvas, Text text,string strFragment) {…
public static Vector2 WorldToCanvasPoint(Canvas canvas, Vector3 worldPos) { Vector2 pos; RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, Camera.main.WorldToScreenPoint(worldPos), canvas.worldCamera, out pos)…
using UnityEditor; using UnityEngine; [CustomEditor(typeof(GameObject))] public class MyEditor : Editor { void OnSceneGUI() { Handles.BeginGUI(); if (GUILayout.Button("输出位置及角度 QQ:745701540")) { GameObject[] objs = Selection.gameObjects; Vector3…
方法: public static Vector3 UIScreenToWorldPoint(Vector3 uiPostion) { uiPostion = UICamera.mainCamera.WorldToScreenPoint(uiPostion); uiPostion.z = 1f; uiPostion = Camera.main.ScreenToWorldPoint(uiPostion); return uiPostion; }…
上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功能. .3 根据书中的提示 做了一个 简易的机器人游戏(只实现了行走) 关于如何在mac(windows)下安装unity3d工具: http://jingyan.baidu.com/article/1e5468f9055a6b484961b737.html 关于unity工具界面分布及功能: 场景…