经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Unity 屏幕外死亡的敌人的分数显示在屏幕内
来源:cnblogs  作者:小辉歌  时间:2019/3/4 8:43:31  对本文有异议

 

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

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

 

 

 

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

 

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

 

原文链接:http://www.cnblogs.com/xiaoahui/p/10464453.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号