834 字
4 分钟

My 3D Project:Unity 多人物理派对游戏

My_3DProject 是一款面向多人短回合对抗的 3D 物理派对游戏。项目使用 Unity、Mirror 和 KCP 专用服务器,主要系统包括场景生命周期、网络玩家、角色控制、运动与动画同步,以及可破坏的体素平台。整体结构把网络身份与角色表现分开,使客户端、服务器和远程观察者沿着各自的职责参与同一局游戏。

启动与场景#

InitialScene 负责进入运行流程,随后载入常驻的 PersistentScene。网络管理器、角色装配管理器、场景切换器和 UI 位于常驻场景中;玩法场景则提供本局使用的地形和碰撞环境。

玩法场景由 SceneChanger 以 Additive 方式加载和切换。客户端与专用服务器使用同一场景请求入口,Mirror 负责连接和玩家生成,项目场景管理器负责玩法场景的生命周期。将常驻服务与每局场景分开后,角色、网络连接和界面可以跨玩法场景继续工作。

网络玩家与角色装配#

Mirror 为每个连接生成 NetworkPlayer 网络根。网络根保存玩家身份、变换同步、角色编号、角色控制和运动同步等组件。服务器依据连接生成网络玩家,客户端再根据同步的角色编号装配对应的完整角色 Prefab。

角色 Prefab 同时服务本地拥有者和远程玩家。NetworkCharacterManager 根据本地身份启用或关闭输入、相机、音频监听器和角色表现组件:拥有者处理本地控制,远程实例保留模型与动画表现。网络根处理联机身份、运动和碰撞,角色 Prefab 则负责模型、Animator 和本地视听组件。

移动与动画#

CharacterMotor 根据相机水平朝向计算移动方向,并组织加减速、跳跃和重力。每帧的位置更新通过一次 CharacterController.Move 完成,状态机维护 Idle、Run、Sprint、Rising 和 Falling 等运动状态。

网络变换与动画状态使用不同的数据链路。NetworkTransformReliable 同步位置和旋转;CharacterMotionSync 传递运动状态、角色局部移动方向和运动权重。远程客户端用收到的运动快照驱动 Animator,不执行拥有者的本地输入和移动逻辑。这样,位置同步描述角色在哪里,运动快照描述角色正在做什么。

体素平台#

体素平台以轻量方块数据保存布局。编辑阶段将方块外表面合并为网格,并按区域组织碰撞;运行时射线命中后,根据碰撞位置定位对应方块。方块变化只重建受影响的表面和碰撞区域,并按需生成碎块表现。

方块数据、可见网格和碰撞区域通过位置关系对应。玩法逻辑负责决定方块何时变化,体素系统负责把数据变化反映到场景几何与物理交互中。


开发日志:My 3D Project

My 3D Project:Unity 多人物理派对游戏
https://www.yonagi.world/posts/unity-3d-project-intro/
作者
YONAGI
发布于
2026-10-25
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
遠い日に想いを馳せて
Laplacian
封面
遠い日に想いを馳せて
Laplacian
0:00 / 0:00