博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity 屏幕外死亡的敌人的分数显示在屏幕内
阅读量:6870 次
发布时间:2019-06-26

本文共 1785 字,大约阅读时间需要 5 分钟。

 

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

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

 

 

 

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

 

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test01 : MonoBehaviour{    Transform cam;//相机物体    Vector3 pos;    // Start is called before the first frame update    void Start()    {        pos = transform.position;        cam = GameObject.FindWithTag("MainCamera").transform;    }    // Update is called once per frame    void Update()    {        Vector3 offset = pos - cam.position;//相对相机的偏移位置        Vector3 camSize = new Vector3(1.51f*(1920f/1080f)-0.2f, 1.51f-0.2f,0);//相机的宽度和高度的一半尺寸,这里假设相机的高度一半为1.51        camSize = camSize - new Vector3(0.2f, 0.2f, 0);//在坐标在屏幕外时,让自己在屏幕内离边缘一段距离0.2        //判断是在屏幕内还是屏幕外        bool isInCam = (Mathf.Abs(offset.x) < camSize.x) && (Mathf.Abs(offset.y) < camSize.y);        //如果是在屏幕内,那么坐标位置等于自己的坐标位置        //如果是在屏幕外,那么坐标位置在屏幕边缘        if (isInCam) {            transform.position = pos;        }        else {            float x=pos.x;            if (Mathf.Abs(offset.x) > camSize.x) x = Mathf.Sign(offset.x) * camSize.x + cam.position.x;            //x = x + -Mathf.Sign(offset.x) * 0.2f;            float y = pos.y;            if (Mathf.Abs(offset.y) > camSize.y) y = Mathf.Sign(offset.y) * camSize.y + cam.position.y;            //y = y + -Mathf.Sign(offset.y) * 0.2f;            transform.position =new Vector3(x, y, 0);        }    }    //判断是在屏幕内还是屏幕外    //如果是在屏幕内,那么坐标位置等于自己的坐标位置    //如果是在屏幕外,那么坐标位置在屏幕边缘    private void OnDrawGizmos()    {        //Gizmos.color = Color.red;        //float x = 1920f / 1080f;        //Gizmos.DrawCube(transform.position, new Vector3(1.51f * (1920f / 1080f), 1.51f, 0) * 2);    }}

 

转载于:https://www.cnblogs.com/xiaoahui/p/10464453.html

你可能感兴趣的文章
chmod修改文件权限失败
查看>>
数据结构与算法-->互为素数
查看>>
Linux系统学习方法——写给小白
查看>>
Nginx服务器报500 Internal Server Error错误
查看>>
链表的游标实现
查看>>
Linux下查看CPU信息、机器型号等硬件信息命令
查看>>
Lync Server 2013 部署 _ 部署简介及系统要求
查看>>
前端小随笔
查看>>
view属性大全
查看>>
Java文件编码示例
查看>>
CactiFans V1.0中文版发布
查看>>
HTML如何显示小于号“<”等特殊符号?
查看>>
别伤了虚拟桌面管理员的"心"
查看>>
Windows系统使用IntelliJ IDEA 搭建Hadoop的开发调试环境(一)
查看>>
yum安装lamp
查看>>
Web.Config文件中数据库连接配置
查看>>
[Unity 3D] Unity 3D 性能优化 (一)
查看>>
spring Quartz定时任务调度 时间设置
查看>>
SymmetricDS: 数据库数据同步Database synchronization
查看>>
Disabling OOM killer on Ubuntu 14.04
查看>>