本文主要是介绍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.切换场景
- 使用场景名
SceneManager.LoadScene(“name”) - 使用场景编号
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:角色下蹲+掉落死亡+切换场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!