3D游戏第九次作业

2023-11-18

3D游戏第九次作业 

1.  血条(Health Bar)的预制设计。具体要求如下

  • 分别使用 IMGUI 和 UGUI 实现
  • 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机
  • 分析两种实现的优缺点
  • 给出预制的使用方法

IMGUI:

效果展示:

实现:

制作一个红色cube作为血条,并用脚本控制血条的位置,添加两个button用来加减血量

以上脚本挂载在预制的cube上,并且把人物作为共有变量以确定血条的位置

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class healthBar : MonoBehaviour
{
    float padding = 0;
    public Transform t;
    // Start is called before the first frame update
    void Start(){ }

    // Update is called once per frame
    void Update()
    {
        this.transform.position = new Vector3(t.position.x-padding, t.position.y + 2, t.position.z);
    }

    private void OnGUI()
    {
        //加血
        if (GUI.Button(new Rect(250, 50, 40, 20), "+"))
        {  
            padding -= 0.05f;
            transform.localScale = new Vector3(transform.localScale.x + 0.1f, transform.localScale.y, transform.localScale.z);
        }

        //扣血
        if (GUI.Button(new Rect(250, 70, 40, 20), "-"))
        {
            if (transform.localScale.x > 0)
            {
                padding += 0.05f;
                transform.localScale = new Vector3(transform.localScale.x - 0.1f, transform.localScale.y, transform.localScale.z);
            }
        }
    }
}

UGUI:

效果展示:

实现:

创建一个人物对象,给它添加canvas画布子对象,并添加 Slider 作为血条主体。

将 Slider 中的 Handle Slider Area 、 Background 禁用,并且设置Fill的Image组件颜色为红色,调整Slider 组件的MaxValue 为 100、Value 为 75。

并给 Canvas 添加以下脚本 LookAtCamera.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class LookAtCamera : MonoBehaviour {

	void Update () {
		this.transform.LookAt (Camera.main.transform.position);
	}
}

使用时,只需要勾选Canvas或者healthBar

两种实现方法的比较

IMGUI

实现简单,比如绘制一个控件,只需要GUI.Lable()、GUI.Button()这样即可,不需要使用UI组件,很容易上手。IMGUI的存在符合游戏编程的传统,在修改模型,渲染模型这样的经典游戏循环编程模式中,在渲染阶段之后,绘制 UI 界面无可挑剔。避免了 UI 元素保持在屏幕最前端,又有最佳的执行效率,一切控制掌握在程序员手中,这对早期计算和存储资源贫乏的游戏设备来说,更是弥足珍贵。

UGUI

可视化,所见即所得(WYSIWYG)设计工具,设计师也能参与程序开发,支持多模式、多摄像机渲染,UI 元素与游戏场景融为一体的交互,UGUI的控件是以“游戏对象”的形式存在与游戏场景中,这样直观易于使用,直接可以在Scene视图中编辑大小、位置、旋转角度、缩放等等,不需要手动写任何代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D游戏第九次作业 的相关文章

随机推荐

  • Vue脚手架相关笔记(ref属性、props配置、mixin混入、scoped样式)

    关于不同版本的Vue 1 vue js 与vue runtime xxx js的区别 1 vue js是完整版的Wue 包含 核心功能 模板解析器 2 vue runtime xxx js是运行版的Vue 只包含 核心功能 没有模板解析器
  • Sysrv-hello挖矿病毒

    麻蛋我的服务器也中了这个挖矿病毒 先看一下网上能找到的文章吧 https developer aliyun com article 780758 讲了一大堆原理 你倒是给我解决办法啊 1 先杀了进程 sysrv network01 2 修改
  • H5打开新窗口与页面跳转的几种方法

    1 在本窗体打开一个新的页面 window location href URL 2 在一个新的窗口打开一个新的页面 window open URL 3 本窗口的页面被替换为一个新的页面URL 替换后不可以回退到上个页面 location r
  • 理光打印机出现sc542-01怎样解决?

    问题图 步骤一图文 补充 理光维修模式指令 107 03以下机型 143 通用 806182 03以上机型 注方法 1 清除键 黄色 点一次 107 停止键 红色键 按住3秒以上 2 依次按重置 RESET 806182 按住C不动3秒 就
  • CentOS7.5最小化安装之后的配置

    我是最小化安装的 安装了之后很多基本使用配置没有 接下来要做一些配置 如网络之类的 使系统可用 1 使命令分页显示 1页显示不不下 又不能上翻页 xxx more 2 查看系统安装了哪些软件包 rpm qa 3 配置网络 最小化安装之后 i
  • 听我一句劝,别去外包,干了3个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入湖南某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 一种关于单片机定时器中断和数码管冲突问题的解决方案

    问题发现 我们会发现 同时存在定时器中断和数码管操作时 有时会导致数码管显示异常 原因探究 在定时器中断函数中不要操作P2和P0 因为定时器 T 和主板 M 的时钟频率不一样 有可能导致M刚操作完P2 T又去操作P0 导致正确的P2和P0没
  • Windows从命令行创建文本文件的两种方式

    第一种方式 copy con 文件名 然后可以输入文件内容 完成后打Ctrl Z退出 输入的内容被保存为一个文件 第二种 如下 echo gt 文件名 创建一个空的文件 当然你可以创建任何后缀名的文本类文件 创建一个SQL文件也是没问题的
  • 教你更优雅的写法处理null检查

    回顾以前对null的处理方式 public class OptionalTest public static void main String args test01 小黑 test01 null public static void te
  • View.VISIBLE、INVISIBLE、GONE的区别

    View VISIBLE INVISIBLE GONE的区别 android中UI应用的开发中经常会使用view setVisibility 来设置控件的可见性 其中该函数有3个可选值 他们有着不同的含义 View VISIBLE gt 可
  • Qt事件和事件循环

    在处理QT循环事件的时候遇到了问题 查了半天资料都没弄明白问题出在哪 后来找大牛同事问了一下 同事就给我写了QCoreApplication processEvent 这个函数 好啦 终于搞定了 这里小记一下 以免以后遇到 于是乎这里认真仔
  • Your account has been blocked问题解决

    更新代码时报错 如下 branches to build service 1 get branch service to dir service only update code Your account has been blocked
  • 2020规划调整,以自研引擎和osg/osgearth源码分析为主

    随着公司转入webgl 我要求调整到osg osgearth工具 因为是c 方面的 特别是osg osgearth源码可以深入下 以前光把视频教程看过 说白了就是简单二次应用 并没有深入下去 所以 趁此机会多读读osg osgearth源码
  • 计算机系统(一)——冯诺依曼体系

    现代计算机的基本结构是由冯诺依曼提出的 冯诺依曼的体系结构体系如下图所示 计算机由运算器 控制器 存储器 也就是内存 输入设备 输出设备五大部件组成 其中运算器和控制器组成cpu 在冯诺依曼体系中 数据先从输入设备输入到内存中 运算时数据从
  • 解决使用SpringBoot上传文件大小受限问题

    今天在做项目学习的过程中 需要用到文件上传 启动项目正常 访问上传post请求突然报出了一个异常 特此记录一下 1 控制台异常 org springframework web multipart MaxUploadSizeExceededE
  • 一起赚美元①

    译者 一只椰子 知识星球链接 https t zsxq com iAiIyfm 本文的主人公叫迈克 他在采访里面提到 自动化工具这一法宝已经轻松帮他实现每个月 12 5万美元的利润 对他而言 年入100万美元 根本不是梦 1 主人公简介 我
  • 看完这篇,成为Grafana高手!

    背景 QQ直播前端团队接入腾讯云前端性能监控 RUM 后 对目前的监控能力以及上报数据进行了梳理 并着手进行了前端性能监控的专项建设 其中监控数据大盘建设是不可或缺的一环 可视化的监控大盘可以清晰明了的观察到各项目运行情况 宏观上能快速进行
  • 【ESP32S2】使用ESP32S2开发板制作U盘,支持无线访问

    文章目录 前言 一 开发环境 二 硬件介绍 三 下载esp idf 四 下载esp iot solution 五 配置idf 1 执行下载脚本 2 设置环境变量 3 声明外部组件 六 构建例程 七 烧写Flash 八 使用方法 九 感谢 前
  • 深度学习之Python,OpenCV中的卷积

    这篇博客将介绍图像内核和卷积 如果将图像视为一个大矩阵 那么图像内核只是一个位于图像顶部的微小矩阵 从左到右和从上到下滑动内核 计算输入图像和内核之间的元素乘法总和 称这个值为内核输出 内核输出存储在与输入图像相同 x y 坐标的输出图像中
  • 3D游戏第九次作业

    3D游戏第九次作业 1 血条 Health Bar 的预制设计 具体要求如下 分别使用 IMGUI 和 UGUI 实现 使用 UGUI 血条是游戏对象的一个子元素 任何时候需要面对主摄像机 分析两种实现的优缺点 给出预制的使用方法 IMGU