Unity2D学习笔记Day15:角色下蹲+掉落死亡+切换场景

2023-10-07 01:50

本文主要是介绍Unity2D学习笔记Day15:角色下蹲+掉落死亡+切换场景,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习资源:B站 M_Studio《Unity教程2D入门》20-21

Unity Assets:Sunnyland

Day15

更正:Time.fixedDeltaTime

让角色移动和跳跃时更加流畅,如果是用FixedUpdate函数,应该相对应选择
Time.fixedDeltaTime。

1. 增加Crouch(下蹲)效果

为节省时间,这里就不添加这个实际效果。但理解一下其中的思路和方法。

在Input中没有Crouch,如何添加?
右键,复制某一项,然后修改其中的参数即可。

下蹲时碰撞体不变,怎么办?
观察游戏运行时的碰撞体,发现即使角色下蹲,碰撞体仍然保持原来的样子。也就是说角色下蹲后还是无法通过低处。

这里就是先前要用两个碰撞体的原因。
当角色下蹲后,应该让头部的box collider消失,起立后再让碰撞体出现。
注意
节点用setactive,组件用enabled。

disColl.enabled = false;

小技巧:如何在游戏运行时看见碰撞体?
点击右上角的Gizmos。
就可以看见属性面板中展开的部分,在Scene中的效果。
在这里插入图片描述
如图,这里展开两个碰撞体的组件。
在这里插入图片描述
问题:下蹲钻到一半时站起,会被卡住。
思路:如果监测到上部有ground,就不能起立。
方法:选中靠近角色头顶的一个点作为基准点,画一个圈,判断ground是否在这个圈内。
Physics2D.OverlapCircle(Vector2 point,float radius,int layerMask)
Checks if a collider falls within a circular area
point:基准点
radius:判断范围
layerMask:要判断的图层

在这里插入代码片

小技巧:判断角色头顶的位置
给角色添加一个子节点celling,将它移至角色的头顶。

代码如下:

void Crouch(){//当没有障碍物时if(!Physics2D.OverlapCircle(Celling.position,0.2f,ground)){if(Input.GetButton("Crouch")){anim.SetBool("isCrouching",true);disColl.enabled = false;}else{anim.SetBool("isCrouching",false);disColl.enabled = true;}//控制角色下蹲}
}

2. 角色掉落死亡

教程里面还使用了trigger碰撞体,但我觉得用y坐标来判断即可。
当角色小于某一y坐标,触发死亡。

我用了一个public变量来设置死亡边界。

public float deadLiney = -7.0f;

游戏重置

using UnityEngine.SceneManagement;

重启当前场景。
update中:

if(transform.position.y < deadLiney)
{SceneManager.LoadScene(SceneManager.GetActiveScene().name);   
}

制作delay效果

延迟2s后启动。

将上述代码重新写为一个函数。

void Restart()
{SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

update中:
在这里插入图片描述
停止播放音乐

		if(transform.position.y < deadLiney){//将所有的音频都禁用GetComponent<AudioSource>().enabled = false;//延迟2s后重启Invoke("Restart", 2f);}

3.切换场景

  1. 使用场景名
    SceneManager.LoadScene(“name”)
  2. 使用场景编号
    SceneManager.GetActiveScene().buildIndex

添加脚本EnterHouse:

	void Update(){if(Input.GetKeyDown(KeyCode.E)){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);}}

场景编号是什么?
在build setting中场景名后面的就是场景编号。
可以通过拖动来修改顺序。
在这里插入图片描述
将该脚本添加给Dialog,只有Dialog窗口启动时,按e才会触发场景切换。
(否则在游戏过程中如果误触了e就会触发场景切换!)

这篇关于Unity2D学习笔记Day15:角色下蹲+掉落死亡+切换场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155323

相关文章

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文