最好玩的对打游戏推荐
一、环境搭建与项目创建
1.1 安装Unity编辑器
访问Unity官网下载Unity Hub:https://unity.com/download
安装Unity Hub后,打开软件,点击"安装编辑器"按钮。
选择Unity 2021.3 LTS版本,安装时勾选以下模块:
- Windows Build Support(Windows平台构建支持)
- Mac Build Support(Mac平台构建支持)
- Android Build Support(Android平台构建支持)
- iOS Build Support(iOS平台构建支持)
1.2 创建新项目
在Unity Hub中点击"新建项目",选择"2D核心"模板。
项目名称填写"2DFightingGame",位置选择本地硬盘路径。
点击"创建项目"按钮,等待Unity编辑器启动。
二、游戏场景搭建
2.1 设置游戏画布
在Hierarchy面板右键,选择UI -> Canvas,创建游戏UI画布。
选中Canvas,在Inspector面板找到Canvas Scaler组件:
设置UI Scale Mode为"Scale With Screen Size"
设置Reference Resolution为1920x1080
设置Screen Match Mode为"Expand"
2.2 创建游戏背景
在Hierarchy面板右键,选择2D Object -> Sprite,命名为Background。
将Background拖拽到Canvas下作为子物体。
为Background添加Sprite Renderer组件,导入背景图片素材。
三、玩家角色制作
3.1 创建玩家预制体
在Project面板右键,选择Create -> Prefab,命名为PlayerPrefab。
将PlayerPrefab拖拽到场景中,在Hierarchy面板中选中它。
添加以下组件:
- Sprite Renderer(精灵渲染器)
- Rigidbody 2D(2D刚体)
- Box Collider 2D(2D盒状碰撞器)
- Animator(动画控制器)
3.2 配置物理属性
选中PlayerPrefab,在Rigidbody 2D组件中设置:
Body Type设置为Dynamic
Gravity Scale设置为3
Linear Drag设置为5
在Box Collider 2D组件中,点击Edit Collider按钮调整碰撞框大小。
四、角色动画系统
4.1 创建动画状态机
在Project面板右键,选择Create -> Animator Controller,命名为PlayerAnimator。
双击打开Animator窗口,创建以下动画状态:
- Idle(待机状态)
- Walk(行走状态)
- Jump(跳跃状态)
- Attack(攻击状态)
- Hurt(受伤状态)
4.2 设置动画过渡
在Animator窗口中,右键Idle状态,选择Make Transition,连接到Walk状态。
选中过渡箭头,在Inspector面板中设置条件:
添加Float类型参数"Speed",设置条件为Speed > 0.1
同样方法设置其他状态间的过渡条件。
五、输入控制系统
5.1 配置输入管理器
打开Edit -> Project Settings -> Input Manager。
在Axes中,将Size从18改为24,为双人游戏添加额外输入轴。
添加以下输入轴配置:
5.2 玩家1控制配置
Horizontal(水平移动):
- Negative Button: left
- Positive Button: right
- Gravity: 3
- Dead: 0.001
- Sensitivity: 3
Vertical(垂直移动):
- Negative Button: down
- Positive Button: up
- Gravity: 3
- Dead: 0.001
- Sensitivity: 3
Attack(攻击按键):
- Positive Button: left ctrl
- Gravity: 1000
- Dead: 0.001
- Sensitivity: 1000
5.3 玩家2控制配置
Horizontal_P2(玩家2水平移动):
- Negative Button: a
- Positive Button: d
- Gravity: 3
- Dead: 0.001
- Sensitivity: 3
Vertical_P2(玩家2垂直移动):
- Negative Button: s
- Positive Button: w
- Gravity: 3
- Dead: 0.001
- Sensitivity: 3
Attack_P2(玩家2攻击按键):
- Positive Button: space
- Gravity: 1000
- Dead: 0.001
- Sensitivity: 1000
六、角色控制脚本
6.1 创建玩家控制器
在Project面板右键,选择Create -> C Script,命名为PlayerController。
双击打开脚本,输入以下完整代码:
``` using UnityEngine; public class PlayerController : MonoBehaviour { public float moveSpeed = 5f; public float jumpForce = 10f; public float attackRange = 1f; public float attackDamage = 10f; public bool isPlayer1 = true; private Rigidbody2D rb; private Animator animator; private bool isGrounded = false; private float groundCheckRadius = 0.2f; public Transform groundCheck; public LayerMask groundLayer; void Start() { rb = GetComponent6.2 配置脚本参数
将PlayerController脚本拖拽到PlayerPrefab上。
在Inspector面板中,为PlayerController组件配置参数:
创建空物体命名为GroundCheck,拖拽到PlayerPrefab下作为子物体。
将GroundCheck物体的Transform位置设置为(0, -0.5, 0)。
将GroundCheck物体拖拽到PlayerController的Ground Check字段。
创建新Layer命名为"Ground",将地面物体的Layer设置为Ground。
在PlayerController的Ground Layer下拉菜单中,选择Ground层。
七、游戏界面制作
7.1 创建血量显示
在Hierarchy面板中,右键Canvas,选择UI -> Slider,创建两个Slider。
分别命名为Player1Health和Player2Health。
选中Player1Health,在Inspector面板中设置:
- Rect Transform:PosX -400, PosY 250, Width 300, Height 30
- Max Value:100
- Value:100
选中Player2Health,在Inspector面板中设置:
- Rect Transform:PosX 400, PosY 250, Width 300, Height 30
- Max Value:100
- Value:100
7.2 创建游戏控制器
创建新C脚本命名为GameManager:
``` using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { public static GameManager instance; public PlayerController player1; public PlayerController player2; public Slider player1HealthSlider; public Slider player2HealthSlider; private float player1Health = 100f; private float player2Health = 100f; void Awake() { if (instance == null) instance = this; else Destroy(gameObject); } void Start() { if (player1HealthSlider != null) player1HealthSlider.value = player1Health; if (player2HealthSlider != null) player2HealthSlider.value = player2Health; } public void PlayerTakeDamage(bool isPlayer1, float damage) { if (isPlayer1) { player1Health -= damage; if (player1HealthSlider != null) player1HealthSlider.value = player1Health; if (player1Health <= 0) GameOver(false); } else { player2Health -= damage; if (player2HealthSlider != null) player2HealthSlider.value = player2Health; if (player2Health <= 0) GameOver(true); } } void GameOver(bool player1Wins) { Time.timeScale = 0f; } } ```八、场景布置与测试
8.1 创建游戏场景
在Hierarchy面板中,创建空物体命名为GameManager。
将GameManager脚本拖拽到该物体上。
创建空物体命名为Ground,添加Sprite Renderer和Box Collider 2D组件。
设置Ground的Position为(0, -3, 0),Scale为(10, 1, 1)。
将Ground的Layer设置为Ground。
8.2 生成玩家实例
将PlayerPrefab从Project面板拖拽到场景中两次。
将第一个实例重命名为Player1,第二个重命名为Player2。
设置Player1的Position为(-2, 0, 0),PlayerController组件的Is Player1勾选为true。
设置Player2的Position为(2, 0, 0),PlayerController组件的Is Player1取消勾选。
修改Player2的Sprite Renderer颜色,与Player1区分。
8.3 配置游戏管理器
选中GameManager物体,在Inspector面板中找到GameManager脚本组件。
将Player1物体拖拽到Player1字段。
将Player2物体拖拽到Player2字段。
将Player1HealthSlider物体拖拽到Player1 Health Slider字段。
将Player2HealthSlider物体拖拽到Player2 Health Slider字段。
九、修改攻击伤害系统
9.1 更新PlayerController脚本
修改PlayerController脚本中的TakeDamage方法:
``` public void TakeDamage(float damage) { animator.SetTrigger("Hurt"); rb.AddForce(new Vector2(0f, 5f), ForceMode2D.Impulse); if (GameManager.instance != null) { GameManager.instance.PlayerTakeDamage(isPlayer1, damage); } } ```9.2 测试游戏功能
点击Unity编辑器上方的Play按钮开始测试。
使用以下按键控制角色:
玩家1:方向键移动,上箭头跳跃,左Ctrl攻击
玩家2:WASD移动,W跳跃,空格键攻击
测试角色移动、跳跃、攻击功能是否正常。
观察血量条是否随攻击减少。
十、构建游戏可执行文件
10.1 配置构建设置
打开File -> Build Settings。
点击Add Open Scenes按钮添加当前场景。
在Platform列表中选择目标平台(Windows/Mac)。
点击Player Settings按钮,配置游戏信息:
在Player Settings中,设置Company Name和Product Name。
设置Default Icon为游戏图标。
10.2 执行构建
在Build Settings窗口中,点击Build按钮。
选择输出文件夹,点击保存。
等待Unity完成构建过程。
构建完成后,在输出文件夹中找到可执行文件,双击运行测试。
版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/20906.html
- 上一篇:地下城与勇士怎么捡东西
- 下一篇:英雄联盟s13惩戒之箭怎么能一q秒人
