Sprite与屏幕之间的关系

锚点这东西挺怀念的,N年前我在做J2ME手游的时候。屏幕整体的坐标是左上角是00点。X轴向右递增,Y轴向下递增。所有的image也是这个原理。只是unity的触摸屏坐标不是左上角,而是左下角。 所以这里我把精灵的锚点也设置成了左下角,注意上图中的pixels to units 请设置成100。
触摸屏坐标:就是用Input.mousePosition 获取用户触摸屏幕手指 或者 鼠标的位置。
实际坐标:unity的实际坐标是笛卡尔坐标系,00点是在正中心,X轴向右是正,向左是负。Y轴向上是正,向下是负。
这样问题也就来了,我怎么把触摸屏的坐标换算到实际坐标系上?解决这个问题之前我们要先解决一个更重要的问题–摄像机的参数。
我开发时的分辨率设置成宽960高640.如下图所示,在Game视图下面,我选择了960X640的分辨率,下面提示的 using reslution 717×478 是因为此时Game视图的比960X640小,所以这里等比例缩小了一点所以是 717X478。

这时选择你的摄像机。如下图所示,把Projection改成Orthographic 也就是正交摄像机。 然后要说的就是size = 3.2。这个3.2是怎么来的呢?想想我们的分辨率的高是多少?高是640. 640/2/100 = 3.2. 除以2就是屏幕高的一半,除以100就是上面我们设置的 pixels to units =100 . 再举个例子如果你开发时的分辨率是1280X720 那么此时你的高就是720了。 720/2/100 = 3.6 那么此时摄像机的size 就应该写成3.6了。。 再唠叨一句,手游的分辨率自适应基本都是这样修改摄像机的size来实现的了。

摄像机的参数搞清楚了,我们在来看看之前提出的问题?我怎么把触摸屏的坐标换算到实际坐标系上? 把如下代码挂在一个Sprite对象上。
using UnityEngine;
using System.Collections; public class FishCommon : MonoBehaviour { private float camHalfHeight;
private float camHalfWidth; void Awake()
{
this.camHalfHeight = Camera.main.orthographicSize;
this.camHalfWidth = Camera.main.aspect * camHalfHeight;
} void Update () {
//手指 或者 鼠标的坐标传进去
Move(Input.mousePosition);
} public void Move(Vector2 postions){
Move(new Vector3(postions.x,postions.y,));
}
public void Move(Vector3 postions){
//在这里进行坐标的换算
transform.position = ScreenToWorld(postions);
} private Vector3 ScreenToWorld(Vector3 postion){ return Camera.main.ScreenToWorldPoint(postion);
}
}
转载自:http://www.xuanyusong.com/archives/3254
Sprite与屏幕之间的关系的更多相关文章
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
转载请包含网址:http://blog.csdn.net/pathuang68/article/details/7351317 一.Surface Surface就是“表面”的意思.在SDK的文档中, ...
- UI设计中px、pt、ppi、dpi、dp、sp之间的关系
UI设计中px.pt.ppi.dpi.dp.sp之间的关系 武汉AAA数字艺术教育 2015-07-24 14:19:50 职业教育 pi px 阅读(3398) 评论(0) 声明:本文由入驻搜狐公众 ...
- 电脑结构和CPU、内存、硬盘三者之间的关系
前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑的: 键盘鼠标.显示器.机箱.音响等等. 这里显示器为比较老的CRT显示器 ...
- 实际比较filter2D和imfilter之间的关系
实际比较filter2D和imfilter之间的关系 卷积运算是图像处理和增强中经常遇到的一种算法.由于很多优秀的开源算法都是采用matlab编写的,在我改写为c ...
- 网络互联技术(2)——前篇—【转载】电脑结构和CPU、内存、硬盘三者之间的关系
原文链接:传送门 详细内容: 电脑结构和CPU.内存.硬盘三者之间的关系 前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑 ...
- 如何理解VB窗体中的scale类属性及width height属性之间的关系
如何理解VB窗体中的scale类属性及width height属性之间的关系 VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解 ...
- android - px(像素)、dpi(像素密度)、dip(密度无关像素)之间的关系
使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,很多时候,我们都希望图片能够在宽度上填充父窗体 ...
- 嵌入式开发之信号采集同步---VSYNC和HSYNC的作用以及它们两者之间的关系
VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC是什么 VSYNC: vertical synchronization,指 ...
- linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)
linux图形界面基本知识(X.X11.Xfree86.Xorg.GNOME.KDE之间的关系)(转自互联网) LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GN ...
随机推荐
- IOS5 ARC unsafe_unretained等说明
转自:http://blog.csdn.net/bsplover/article/details/7707964 iOS5中加入了新知识,就是ARC,其实我并不是很喜欢它,因为习惯了自己管理内存.但是 ...
- 黑客编程教程(十三)多线程DOS程序
DOS基本原理相信大家都已经很熟悉了,DOS工具大家也用的很熟悉.在群里 经常有人说什么时候去DOS什么东西. 现在我们就自己编写一个DOS工具. #include <winsock2.h> ...
- 【Java】高并发同步Volatile的使用
引言: 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的Synchronized,它在多处理器开发中保证了共享变量的“可见性”. 可见性的意思 ...
- c++之五谷杂粮---2
2.1 我们通过调用运算符(call operator)来执行函数.调用运算符的形式是一对圆括号,它作用于一个表达式,该表达式是函数或者指向函数的指针:圆括号之内是用逗号隔开的实参列表,我们用实参初 ...
- 使用 Elasticsearch 实现博客站内搜索
Reference: http://www.open-open.com/lib/view/open1452046497511.html 一直以来,为了优化本博客站内搜索效果和速度,我使用 bing ...
- JavaScript高级 面向对象(5)--内存逻辑图画法
说明(2017.3.30): 1. 使用软件diagram designer,DiagramDesignerSetup1.28.zip,很小只有1M多,我用的自带画图软件.教学视频是“JavaScri ...
- VBA学习笔记(7)--vba的数组函数
说明(2017.3.25): 1. split(str,"-")和join(arr,",")函数,用法跟其他语言差不多. 2. filter函数,filter( ...
- R 画structure图
id percent k1_B04_WL-1.fs_1 0.021 k31_B04_WL-1.fs_1 0.624 k21_B04_WL-1.fs_1 0.355 k1 K=3 数据输 ...
- java Web监听器实现定时发送邮件
首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask) 由于我 ...
- 爬取千万淘宝商品的python脚本
import time import leveldb from urllib.parse import quote_plus import re import json import itertool ...