在敌人死亡后,会出现分数,如果敌人死亡的位置在屏幕内,那么使得获得的分数显示在屏幕内,超出屏幕范围的,显示在屏幕外

当然,这里例子是使得场景中的物体显示在屏幕内,当然也可以使用纯粹的UGUI物体的显示,但是换算方式上刚好相反。

有如下脚本,脚本挂在分数物体上

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Test01 : MonoBehaviour
  6. {
  7. Transform cam;//相机物体
  8. Vector3 pos;
  9. // Start is called before the first frame update
  10. void Start()
  11. {
  12. pos = transform.position;
  13. cam = GameObject.FindWithTag("MainCamera").transform;
  14. }
  15.  
  16. // Update is called once per frame
  17. void Update()
  18. {
  19. Vector3 offset = pos - cam.position;//相对相机的偏移位置
  20. Vector3 camSize = new Vector3(1.51f*(1920f/1080f)-0.2f, 1.51f-0.2f,);//相机的宽度和高度的一半尺寸,这里假设相机的高度一半为1.51
  21. camSize = camSize - new Vector3(0.2f, 0.2f, );//在坐标在屏幕外时,让自己在屏幕内离边缘一段距离0.2
  22. //判断是在屏幕内还是屏幕外
  23. bool isInCam = (Mathf.Abs(offset.x) < camSize.x) && (Mathf.Abs(offset.y) < camSize.y);
  24. //如果是在屏幕内,那么坐标位置等于自己的坐标位置
  25. //如果是在屏幕外,那么坐标位置在屏幕边缘
  26. if (isInCam) {
  27. transform.position = pos;
  28. }
  29. else {
  30. float x=pos.x;
  31. if (Mathf.Abs(offset.x) > camSize.x) x = Mathf.Sign(offset.x) * camSize.x + cam.position.x;
  32. //x = x + -Mathf.Sign(offset.x) * 0.2f;
  33.  
  34. float y = pos.y;
  35. if (Mathf.Abs(offset.y) > camSize.y) y = Mathf.Sign(offset.y) * camSize.y + cam.position.y;
  36. //y = y + -Mathf.Sign(offset.y) * 0.2f;
  37.  
  38. transform.position =new Vector3(x, y, );
  39. }
  40. }
  41.  
  42. //判断是在屏幕内还是屏幕外
  43. //如果是在屏幕内,那么坐标位置等于自己的坐标位置
  44. //如果是在屏幕外,那么坐标位置在屏幕边缘
  45.  
  46. private void OnDrawGizmos()
  47. {
  48. //Gizmos.color = Color.red;
  49. //float x = 1920f / 1080f;
  50. //Gizmos.DrawCube(transform.position, new Vector3(1.51f * (1920f / 1080f), 1.51f, 0) * 2);
  51. }
  52. }

Unity 屏幕外死亡的敌人的分数显示在屏幕内的更多相关文章

  1. appium滚动查找屏幕外的控件

    嗯,还是把自己做的实验保存一下 Appium1.12.1+python2.7 实验滚动,查找屏幕外控件以及控制seekbar scroll() 是根据页面中两个元素位置之间的距离进行滑动. 滑动寻找屏 ...

  2. Unity自学路线整理(参看微信公众号Unity墙外的世界的文章 )

    目前还是个新手. 发现自己有时候还是会一脸蒙...的对着电脑屏幕不知所措,为了利用好在大学零散的时间所以整理一下学习unity的路线. 计划好才能更好的利用时间. 1. 先学好C#再去看引擎,我看的是 ...

  3. WIN10运行软件,窗口不显示(移动到屏幕外无法复原)的解决办法 Lebal:bug10解决方案

    双显示器切换回单显示器的时候,可能会遇到窗口移动到屏幕外不显示的情况 像这样虽然有缩略图但是点击无反应,并且平铺窗口也不管用,这个时候单击该窗口,Alt+space 执行最小化以及最大化操作即可复原

  4. JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。

    1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...

  5. JQuery 弹出层,始终显示在屏幕正中间

    1.让层始终显示在屏幕正中间: 样式代码: .model{ position: absolute; z-index: 1003; width:320px; height:320px; text-ali ...

  6. UIScrollView显示超出屏幕大小的内容

    1:UIScrollView在初始化的时候可以指定frame,它的frame和其他控件不太一样的地方是: 它的frame指的的“可视大小”,也就是我们指定多大的frame来看一张图片,当然最大就是屏幕 ...

  7. iOS高德地图让指定区域或者点显示在屏幕中间

    对于高德地图也是一个新手,很多功能看文档,问技术 或者高德群里讨论  群号:204668425 在我们需求中绘制的有 圆 折线 不规则图形 方式,打开地图指定的绘制图形置于屏幕中间 1.首先创建一个数 ...

  8. 对屏幕的理解---分辨率,dpi,ppi,屏幕尺寸,像素 等

    1. 名词理解 屏幕尺寸(screen size) 屏幕尺寸(screen size),是屏幕的对角线长度,一般讲的大小单位都是英寸. DPI (dots per inch) dpi 是(英文Dots ...

  9. 【转】从Shell脚本内部将所有标准输出及标准错误显示在屏幕并同时写入文件的方法

    如果全部都要重定向的话每一条命令后面>>并不方便,可以这么做.在开头就声明 exec 1>>$log_file表示将脚本中所有的正确输出全部追加到$log_file,错误信息会 ...

随机推荐

  1. tomcat与jmeter

    jmeter无法提取出Tomcat之外的其他服务器的指标. 为了克服这一现状,研发了一个服务器代理,jmeter通过这个代理来获取性能数据. 代理使用的是sigar开源库,他是一个java通过部分和一 ...

  2. contenteditable设置元素可编辑

    需求背景 实现一个输入框,高度可以随着输入文字的增加而自动增高 有placeholder,输入为空时,显示placeholder 我们知道可以将div的contenteditable设置伪true,将 ...

  3. php emoji mysql保存和搜索

    MySQL版本>=5.5.3 表字符集: utf8mb4 解决保存 排序规格: utf8mb4_bin 解决搜索 PHP:  set names utf8mb4 操作系统: WIN10 MAC

  4. Oracal 学习之用户角色创建分配表空间 给角色分配权限

    //创建角色inspur 密码为inspur,默认的表空间为USERS create user inspur identified by inspur default tablespace USERS ...

  5. syslog系统日志、事件日志分析、EventLog Analyzer

    syslog系统日志.事件日志分析.EventLog Analyzer Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机.服务器.网络设备.数据库以及 ...

  6. How to turn on syntax highlighting in osx

    put follow code in ~/.vimrc set ai " auto indenting set history=100 " keep 100 lines of hi ...

  7. 前端之javascript的数据类型1和BOM对象

    一 js对象 BOM对象:browser object model浏览器模型对象 window对象:定时器 DOM对象:文档对象模型 js对象:字符串对象,数组对象,日期对象,math对象 new关键 ...

  8. [转]order by 与索引

    ORDER BY 通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了.另一个是把结果选好之后再排序. 用有序索引这种,当然是最快的,不过有一些限制条件, ...

  9. 859. Buddy Strings

    class Solution { public: bool buddyStrings(string A, string B) { int lenA=A.length(); int lenB=B.len ...

  10. 苹果电脑thunderbolt连接两台电脑启动方法

    thunderbolt:首先连接连台电脑 然后开启可以启动的电脑, 关闭无法启动的电脑. 接着 按一下法启动的电脑电源—> 然后按t键 会在另外一台可以启动的电脑上出现,无法启动电脑的磁盘. 就 ...