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

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

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.实现接