游戏射箭小游戏怎么玩

游戏简介 地图上共有3个射箭关卡,每个关卡对应一个射击位,站在射击位即可开启关卡。每个关卡需要在特定时间内射击一定数量的靶子。每个关卡有三次机会,但若自知成功无望也可离开射击位以重置关卡(不消耗机会)。弓箭数量不限,但必须前一支箭落地或是击中目标才能发射下一支箭,因此对待高处目标需谨慎。同时,地图上也有三个隐藏的靶子,全部找到可改变结束的恭喜语句。 游戏操作 WASD:人物移动 Shift:长按跑步 鼠标移动:视角旋转 左键:长按为弓弩蓄力,松开即发射 Q:切换天空盒 演示视频 【3d游戏编程作业5——射箭小游戏】 https://www.bilibili.com/video/BV13M411Z7Mo/?share_source=cop... 实现思路 1、弓弩移动: 使用标准资源包中的FPS预设,将弓弩设为其子物体实现 2、蓄力动画: 使用混合动画树,将零蓄动画和满蓄动画、零蓄动画和发射动画分别进行混合,并用同一个变量drawstrength设置其混合比例,在代码中修改drawstrength的值,即可实现不同蓄力程度的动画。再设置Holding变量,为真时可从Empty向Fill转移,为假时可从Fill向Shoot转移。代码中还会根据长按时间修改动画速度,使得不同的蓄力时间有着不同的动画速度。 Fill的混合树: Fire的混合树: 3、箭运动: 为实体箭赋予刚体组件。在发射动画结束时触发动画时间,隐藏动画箭的同时将实体箭移动到动画箭的位置,并根据drawstrength设置其初速度,即可实现箭的发射与运动 4、箭的碰撞: 为箭和被碰物体设置碰撞盒,在箭进入碰撞事件时,判断碰到物体的Tag,实现不同的操作。 5、天空盒切换: 修改Renderer.skybox 6、射击位实现: 射击位设置碰撞盒并开启is Trigger,触发OnTriggerIn和OnTriggerExit时判断对象tag是否为Player,并进行相应操作。 具体代码 1、SceneController:控制场景物体的启/禁用,并处理游戏通关逻辑 2、shootaction:附着于十字弩对象,主要负责修改弩动画 3、arrowaction:附着于实体箭,主要负责箭的碰撞检测 4、LevelSet:附着于关卡对象(孩子有多个普通靶子的空对象,每关对应一个),负责控制本关的参数。 5、standplaceaction:附着于射击位,负责检测玩家的进入和退出,并据此启动/暂时关闭对应关卡 6、UserGUI:负责关卡信息与游戏结束信息显示
  • 声明:本文由160攻略网独家原创,未经允许,严禁转载!如有侵权请邮箱联系352082832@qq.com