尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

3 步跑起来:Godot TPS Demo 这个第三人称射击示例值得逐行读

3 步跑起来:Godot TPS Demo 这个第三人称射击示例值得逐行读 3 步跑起来Godot TPS Demo 这个第三人称射击示例值得逐行读【免费下载链接】tps-demoGodot Third Person Shooter with high quality assets and lighting项目地址: https://gitcode.com/gh_mirrors/tp/tps-demoGodot TPS Demo 是 Godot 引擎团队出品的开源第三人称射击示例。它展示的不只是能玩而是把 TPS 最典型的那几个问题——角色、相机、子弹、敌人、关卡——拆进了几个结构清晰的目录里每个机制都有明确归属适合对着代码学。3 步跑起第一个 TPS装引擎Godot 免费开源MIT 许可下载最新的 4.x 稳定版即可。克隆代码git clone https://gitcode.com/gh_mirrors/tp/tps-demo打开运行Godot 编辑器直接打开克隆下来的目录按 F5。入口在project.godot里定义主场景指向res://main/main.tscn启动先进主菜单选开始战斗才加载level/level.tscn。仓库体积不小贴图和模型占大头首次导入会转一会儿属于正常现象。角色是怎么动的根运动而不是硬推模型新手写 TPS 移动习惯直接移动CharacterBody3D。这个项目走了另一条路位移是烘焙在动画里的。player/player.tscn的根节点是CharacterBody3D逻辑集中在player/player.gd碰撞和重力仍然交给move_and_slide()真正的移动方向和速度来自AnimationTree的 root motion脚本从走跑动画里读出角色位移get_root_motion_position()再换算成速度写回去跳起和落地只是切换 AnimationTree 状态jump_up/jump_down音效同步播好处是移动永远和动画同步不会出现滑步。代价是你得有带 root motion 的动画资源。做简单 demo 的话这部分可以不抄直接算速度更省事。相机是怎么跟着角色走的相机逻辑很克制只做跟随、距离约束和瞄准拉近。层级写得很直白CameraBase→CameraRot→SpringArm3D→Camera3D。CameraBase挂在角色原点上方 1.6 米负责水平转向CameraRot负责俯仰角度夹在 -89.9° 到 70° 之间防止看天时视角翻过去SpringArm3D的 spring_length 设了 2.4相机被墙体挡住时会自动收缩不会脸贴墙按住右键瞄准时AnimationPlayer播放 shoot 片段把相机推近形成瞄准构图松开后播 far 还原鼠标、键盘输入和相机旋转全在player/player_input.gd里瞄准时旋转速度会减半。这套结构是 TPS 相机的标准解法可以直接抄。射击与子弹是怎么实现的射击拆成玩家侧和子弹侧两块。玩家侧player/player.gd只有处于瞄准状态且FireCooldown0.4 秒的 Timer结束时才允许开火子弹从player/bullet/bullet.tscn实例化放在挂在骨骼GunBone下的ShootFrom标记点上所以枪口位置跟持枪动画走同时用add_collision_exception_with(self)排除自己避免子弹刚出生就命中玩家。子弹侧player/bullet/bullet.gd子弹本身是CharacterBody3D每帧用move_and_collide()以 20 单位/秒的固定速度推进寿命 5 秒超时自动引爆子弹上还挂了OmniLight3D只在爆炸瞬间开启阴影——移动的小光源影子几乎看不出省一次绘制。碰撞判定子弹如何击中红色机器人项目设置了 3 个物理层Level / Player / Player Only瞄准射线按层掩码过滤子弹不会打到不该打的东西。命中处理很轻子弹碰到物体后检查对方有没有hit()方法有就通过 RPC 调用。红色机器人的hit()enemies/red_robot/red_robot.gd扣血初始 5 点并在 3 个受击动画里随机选一个播血量归零就关掉碰撞体、切到解体节点——头和护盾是RigidBody3D约束一释放零件在物理模拟下自然四散死亡完全是物理效果没有额外逻辑。机器人 AI 是四态状态机IDLE → APPROACH → AIM → SHOOTING射击间隔 6 秒瞄准动作 1 秒全部是导出变量调起来方便。魔改入口在哪想改什么看哪里移动手感 / 射击节奏player/player.gdroot motion、FireCooldown相机拉近动作player/player.tscn里的 far / shoot 动画片段子弹速度 / 寿命player/bullet/bullet.gd的BULLET_VELOCITY、time_alive机器人血量 / AI 节奏enemies/red_robot/red_robot.gd的health等导出变量出生点level/level.tscn下的RobotSpawnpoints节点顺带两个点关卡里的门是玩家靠近自动开的door/door.gd用Area3D检测进入关卡支持在设置里切换 SDFGI / VoxelGI / Lightmap 三种全局光照拿来对比光照方案很合适。把仓库 clone 下来跑起来先改两个数试试player/bullet/bullet.gd里的子弹速度和player/player.tscn里FireCooldown的等待时间——改完立刻就能体会这套管线是怎么串起来的。【免费下载链接】tps-demoGodot Third Person Shooter with high quality assets and lighting项目地址: https://gitcode.com/gh_mirrors/tp/tps-demo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表