[Unity3D] 如何识别屏幕边缘
出现的问题
- Unity3D中长度单位是米
- 使用Screen.resolutions获取的屏幕信息单位是像素
也就是说,即使获取了屏幕相关信息及参数,也无法把信息转换成可在editor中使用的信息。当时想在做Protect The Red 。
于是,就开始了自己的谷歌之旅。
在StackExchange和Unity Answers上翻了翻,最终搞懂了,大致思路是这样的。
解决思路
- 获取Viewport里的右上角(z=Mathf.Abs(Camera.main.transform.position.z))
- 使用ViewportToWorldPoint 将Vieport坐标转化为WordlPoint,游戏世界里的位置
代码实现
[HideInInspector]public float leftBorder;
[HideInInspector]public float rightBorder;
[HideInInspector]public float topBorder;
[HideInInspector]public float downBorder;
private float width;
private float height; void SetBasicValues(){
//the up right corner
Vector3 cornerPos=Camera.main.ViewportToWorldPoint(new Vector3(1f,1f,
Mathf.Abs(-Camera.main.transform.position.z)));
leftBorder=Camera.main.transform.position.x-(cornerPos.x-Camera.main.transform.position.x);
rightBorder=cornerPos.x;
topBorder=cornerPos.y;
downBorder=Camera.main.transform.position.y-(cornerPos.y-Camera.main.transform.position.y); width=rightBorder-leftBorder;
height=topBorder-downBorder; }
成果--守住红色
最终的结果是这样的,墙壁游戏运行后一直处在屏幕的四边。将小球控制在屏幕内。


[Unity3D] 如何识别屏幕边缘的更多相关文章
- iOS七大手势之(平移、捏合、轻扫、屏幕边缘轻扫)手势识别器方法
使用手势很简单,分为两步: 创建手势实例.当创建手势时,指定一个回调方法,当手势开始,改变.或结束时,回调方法被调用. 添加到需要识别的View中.每个手势只对应一个View,当屏幕触摸在View的边 ...
- Unity3D NGUI自适应屏幕分辨率(2014/4/17更新)
原地址:http://blog.csdn.net/asd237241291/article/details/8126619 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 本文链接地址: ...
- C# WPF 如何禁止窗口拖到屏幕边缘自动最大化
win7以上的系统新增了功能--窗口拖到屏幕边缘自动最大化
- C# WinForm 类似QQ靠近屏幕边缘隐藏显示
当窗体离屏幕四周一定距离时,改变窗体位置,引导窗体靠边:靠边后,当鼠标离开窗体时,改变窗体位置,窗体隐藏,凸出一点在屏幕内:隐藏后,当鼠标移到窗体时,窗体显示. using System; using ...
- Unity3D Android手机屏幕分辨率问题
Android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式:unity3D 也为我们提供了一个不错的解决方案. 在Unity3D 进行 android ...
- unity3d点击屏幕选中物体
原文 http://blog.csdn.net/mycwq/article/details/19906335 前些天接触unity3d,想实现点击屏幕选中物体的功能.后来研究了下,实现原理就是检测从 ...
- unity3d之在屏幕上画线
如何在屏幕上画线,简单的代码如下: using UnityEngine; public class Test : MonoBehaviour { void OnGUI() { GL.LoadOrtho ...
- 修改navigationbar右侧按钮离屏幕边缘位置
先上代码 UIButton *settingBtn = [Utils creatCustomButtonWithFrame:CGRectMake(, , , ) btnTitle: titleColo ...
- C# 窗体靠近屏幕边缘自动隐藏*学习(类似于QQ)
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; us ...
随机推荐
- leetcode:7. Reverse Integer
这题简单,也花了我好长时间,我自己写的code比较麻烦,也没啥技巧:按正负性分类执行,先转化成字符串,用stringbuilder进行旋转,如果超出范围了就用try catch public int ...
- NPM run start使用本地的http-server
在项目开发过程中,Visual Studio 2015 一个Solution中有一个前端项目 Myproject.FrontEnd,我们使用node.js, npm来进行管理 在这个项目中,有一个pa ...
- hdu1073
#include<iostream> using namespace std; #define N 5050 char a[N],b[N],tmp[N]; void Read(char p ...
- C#进行Post请求(解决url过长的问题)
//实例代码: 1.post请求 private string GetImageXY(string imgbyte) { string result3 = string.Empty; try { st ...
- NPOI导出EXCEL部分样式不起作用
在使用NPOI导出excel的时候,设置cell样式,数据量多余6条之后,在后面几条数据没有样式(边框,对其,换行等). 原因是设置CellStyle的时候把CreateCellStyle放在循环列集 ...
- 关于.net Core项目发布在Linux上的填坑
本文主要记录.net Core项目发布在Linux服务器上面所遇到的问题,防止遗忘是 1.在发布文件中执行 dotnet xxxxxx.dll的时候提示如下错误: An assembly specif ...
- jquery事件之事件委托和事件切换
一.事件委托函数: 方法名 说明 语法 (events 事件类型,data数据,handler 事件处理函数,selector 选择器) live 用于为指定元素的一个或多个事件绑定事件处理函数. j ...
- Java实例练习——java实现自动生成长度为10以内的随机字符串(可用于生成随机密码)
package sorttest; import java.util.ArrayList; import java.util.Collections; import java.util.List; i ...
- Cogs 1995. Yukari
1995. Yukari ★★☆ 输入文件:camera.in 输出文件:camera.out 简单对比时间限制:1 s 内存限制:128 MB 题目背景: 幻想乡的创始人之一,八云紫 ...
- sys_guid()
create extension "uuid-ossp"; create or replace function sys_guid() returns uuid as $$sele ...