news 2026/2/24 4:09:42

Unity教学 项目2 2D闯关游戏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity教学 项目2 2D闯关游戏

视频教程:

https://www.bilibili.com/video/BV1mjXsYXERe?spm_id_from=333.788.videopod.sections&vd_source=25b783f5f945c4507229e9dec657b5bb

1.基本设置

1.1 素材

创建项目

调整布局

基础设置

导入素材

设置人物图片

“过滤模式”三个选项的区别

属性Point (No Filter)BilinearTrilinear
插值方式最近邻插值(Nearest Neighbor)双线性插值(4 像素加权平均)三线性插值(Mipmap 层级间平滑过渡)
清晰度高(像素化明显)中等(轻微模糊)中等(更柔和的模糊)
锯齿效果明显减少减少
模糊程度轻微更高
性能开销最低中等较高
适用场景像素风格游戏、保持原始像素感的纹理普通 3D 游戏中的纹理、UI 元素远距离观察的物体(如地形、远景)
Mipmap 支持不支持平滑过渡支持单层 Mipmap 平滑支持多层 Mipmap 平滑过渡
视觉效果特点锐利、块状效果平滑、自然过渡自然、适合远近视角切换

1.2 场景、叠层

1.2.1 场景

设置森林背景图片

显示“平铺调色盘”

创建瓦片地图相关的文件夹、文件

绘制地图

1.2.2 叠层

新增三个图层

调色板可增加功能按钮

新建瓦片地图

依次设置排序图层

依次设置图层顺序

修改摄像机背景颜色

1.3 规律瓦片

新建文件夹、动画瓦片、规律瓦片

设置规律瓦片规则

设置动画瓦片规则

最终效果

2.玩家

2.1 碰撞体、物理组件

地面

玩家

2.2 输入系统

设置新的输入系统

安装“Input System”包

创建输入系统脚本

2.3 移动翻转

usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.InputSystem;publicclassPlayerController:MonoBehaviour{[Header("基础参数")]publicVector2inputDirection;publicfloatspeed;publicfloatjumpForce;publicPlayerInputContollerinputController;privateRigidbody2Drb;privateboolisGrounded;privatevoidAwake(){inputController=newPlayerInputContoller();rb=GetComponent<Rigidbody2D>();}// Start is called before the first frame updatevoidStart(){}// Update is called once per framevoidUpdate(){inputDirection=inputController.Player.Move.ReadValue<Vector2>();}privatevoidFixedUpdate(){Move();}privatevoidOnEnable(){inputController.Enable();}privatevoidOnDisable(){inputController.Disable();}voidMove(){rb.velocity=newVector2(inputDirection.x*speed*Time.deltaTime,rb.velocity.y);floatfaceDir=transform.localScale.x;if(inputDirection.x<0)faceDir=-1;if(inputDirection.x>0)faceDir=1;transform.localScale=newVector3(faceDir,1,1);}}

2.4 跳跃

usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.InputSystem;publicclassPlayerController:MonoBehaviour{publicVector2inputDirection;publicfloatspeed;publicfloatjumpForce;publicLayerMaskgroundLayer;publicTransformgroundCheck;publicfloatgroundCheckRadius=0.2f;publicPlayerInputContollerinputController;privateRigidbody2Drb;privateboolisGrounded;privatevoidAwake(){inputController=newPlayerInputContoller();rb=GetComponent<Rigidbody2D>();inputController.Player.Jump.started+=Jump;}// Start is called before the first frame updatevoidStart(){}// Update is called once per framevoidUpdate(){inputDirection=inputController.Player.Move.ReadValue<Vector2>();}privatevoidFixedUpdate(){Move();CheckGround();}privatevoidOnEnable(){inputController.Enable();}privatevoidOnDisable(){inputController.Disable();}voidMove(){rb.velocity=newVector2(inputDirection.x*speed*Time.deltaTime,rb.velocity.y);floatfaceDir=transform.localScale.x;if(inputDirection.x<0)faceDir=-1;if(inputDirection.x>0)faceDir=1;transform.localScale=newVector3(faceDir,1,1);}privatevoidJump(InputAction.CallbackContextcontext){if(isGrounded){Debug.Log("Jumping");rb.AddForce(Vector2.up*jumpForce,ForceMode2D.Impulse);isGrounded=false;}else{Debug.Log("Not Jumping, not grounded");}}privatevoidCheckGround(){isGrounded=Physics2D.OverlapCircle(groundCheck.position,groundCheckRadius,groundLayer);}}

2.5 闲置、移动动画

添加动画控制器、动画片段

设置动画器

代码

2.6 跳跃动画

2.7 受伤

Player

Boar

usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;/// <summary>/// 角色基础属性管理类,处理生命值和伤害计算/// </summary>publicclassCharacter:MonoBehaviour{// 当前生命值publicfloatcurrentBlood;// 最大生命值publicfloatmaxBlood;/// <summary>/// 处理角色受到伤害的方法/// </summary>/// <param name="damage">受到的伤害值</param>publicvoidTakeDamage(floatdamage){// 减少当前生命值currentBlood-=damage;// 确保生命值不会低于0if(currentBlood<0)currentBlood=0;}}
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.TextCore.Text;/// <summary>/// 处理攻击行为和伤害判定的组件/// </summary>publicclassAttack:MonoBehaviour{// 攻击伤害值publicfloatattackValue;// 是否处于无敌状态privateboolisInvincible;// 上次造成伤害的时间privatefloatlastTime;// 无敌状态持续时间(单位:秒)privatefloatinvincibleDuration=2f;privatevoidAwake(){// 初始化上次攻击时间lastTime=Time.time;}// Update在每一帧被调用voidUpdate(){// 检查是否需要解除无敌状态if(isInvincible&&Time.time-lastTime>=invincibleDuration){isInvincible=false;}}/// <summary>/// 当其他碰撞体持续停留在触发器内时调用/// </summary>/// <param name="collision">与之碰撞的碰撞体</param>privatevoidOnTriggerStay2D(Collider2Dcollision){// 如果碰撞对象不是玩家,直接返回if(!collision.CompareTag("Player"))return;// 只有在非无敌状态下才造成伤害if(!isInvincible){// 获取被攻击对象的Character组件Charactercharacter=collision.GetComponent<Character>();// 对目标造成伤害character.TakeDamage(attackValue);// 进入无敌状态isInvincible=true;// 记录当前时间点lastTime=Time.time;}}}

受伤动画

2.8 死亡

2.9 攻击

动画

判定

3.敌人

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 14:01:04

Neovim代码补全终极指南:极速配置与智能提示

Neovim代码补全终极指南&#xff1a;极速配置与智能提示 【免费下载链接】neovim 一个基于 Vim 编辑器的衍生版本&#xff0c;其主要改进和优化方向是提升编辑器的扩展能力和用户使用体验。 项目地址: https://gitcode.com/GitHub_Trending/ne/neovim 想要在Neovim中享受…

作者头像 李华
网站建设 2026/2/24 7:51:35

【Kubernetes】使用Helm简化k8s部署、管理

确定你安装版本的安全配置安装和配置Helm。安装HelmmacOSbrew install helmWindowschoco install kubernetes-helmDebian/Ubuntusudo apt-get install curl gpg apt-transport-https --yescurl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey | gpg --de…

作者头像 李华
网站建设 2026/2/23 11:41:35

零基础也能搭建企业官网:Halo开源建站工具实战指南

你是否在为创业初期的线上形象而烦恼&#xff1f;面对高昂的SaaS建站费用和技术门槛&#xff0c;很多创业者望而却步。本文将通过Halo开源建站工具&#xff0c;为你提供一套完整的解决方案&#xff0c;让你在30分钟内搭建专业企业官网&#xff0c;实现零成本起步。 【免费下载链…

作者头像 李华
网站建设 2026/2/23 21:38:36

Open-SaaS邮件系统性能优化实战:构建高并发异步处理架构

Open-SaaS邮件系统性能优化实战&#xff1a;构建高并发异步处理架构 【免费下载链接】open-saas A free, open-source SaaS app starter for React & Node.js with superpowers. Production-ready. Community-driven. 项目地址: https://gitcode.com/GitHub_Trending/op/…

作者头像 李华
网站建设 2026/2/21 1:54:31

基于vue的考研信息共享平台_a5a399ip_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/2/22 10:12:52

ROAPI零代码API构建完整指南:从入门到实战

ROAPI零代码API构建完整指南&#xff1a;从入门到实战 【免费下载链接】roapi Create full-fledged APIs for slowly moving datasets without writing a single line of code. 项目地址: https://gitcode.com/gh_mirrors/ro/roapi 你是否曾为数据文件创建API而烦恼&…

作者头像 李华