我们在做“搜打撤”射击类项目时遇到一个需求:"任意的角色,可以自由搭配任意的枪支武器"。今天把我们的方案开源给大家。方案的效果演示如下:
演示效果
https://mp.weixin.qq.com/s/hZEyhPLN8rVP0wXhiGRwag
1: 构建美术工作流
要实现任意角色可以搭配任意的枪械+武器,美术工作流如下:
step1: 美术建模构建角色,并绑定好"人形骨骼";
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀

step2: 美术做好枪械等武器模型;

step3: 编辑角色模型,设置好绑定武器枪械的左手,右手骨骼节点;


step4: 编辑好枪械等武器模型,设置好"绑定到手"的方式与"绑定锚点"
分为"单手"模式与"双手模式",单手又分为"左手"与"右手",左手就绑定到左手的"锚点",右手就绑定到右手的"锚点"。


step5: 针对每种武器,调好基于"人形骨骼"+枪械的动画,并做好动画控制状态机。手枪调手枪动画+状态机,狙击枪调狙击枪的动画+状态机


2: 程序使用角色+武器的流程
step1: 根据角色的类型,代码创建一个角色到场景;
step2: 根据角色携带的武器装备,创建一个武器作为角色的孩子节点,放到角色中;

step3: 把角色的左手,右手骨骼设置到武器中;
public void Init(Transform RightHandBone, Transform LeftHandBone){if (primaryHandType == PrimaryHandType.Right){primaryHandBone = RightHandBone;offHandBone = LeftHandBone;}else{primaryHandBone = LeftHandBone;offHandBone = RightHandBone;}if (rigType == WeaponRigType.OneHanded) {OneHandedUpdate();}else {TwoHandedUpdate();}}
step4: LateUpdate里面武器把自己的"锚点"与角色的"骨骼点"同步;
private void LateUpdate(){if (primaryHandBone == null || primaryHandAnchor == null) return;if (rigType == WeaponRigType.TwoHanded && (offHandBone == null || offHandAnchor == null)) return;if (rigType == WeaponRigType.OneHanded){OneHandedUpdate();}else{TwoHandedUpdate();}}
private void OneHandedUpdate(){Quaternion desiredRotation = primaryHandBone.rotation;Quaternion rotationCorrection = desiredRotation * Quaternion.Inverse(primaryHandAnchor.localRotation);transform.rotation = rotationCorrection;Vector3 positionCorrection = primaryHandBone.position - primaryHandAnchor.position;transform.position = transform.position + positionCorrection;}
step5: 根据武器的类型,找到搭配该武器的动画+状态机,设置到角色上;


step6: 把状态机的控制,封装成对应的接口函数:Idle, Walk, Shoot等;
public void Shoot() {this.anim.SetFloat("Movement Speed", 0.1f);this.anim.SetBool("Aim", true);this.anim.SetTrigger("Shoot");}
END
基于以上的流程,就可以实现N种角色自由搭配M种武器。如果每种武器对于不同的模型,手臂的挂载点的位置不一样,我们可以在骨骼里面添加特殊的挂载点,来做到更好的匹配。
====================
"搜打撤"类商业化陪跑教程上线了。支持Unity/Cocos双客户端,以“第三人称射击类”游戏为玩法主体,基于目前比较火的”搜“,”打“,”撤“的游戏结构,玩家通过战斗,收集装备,升级装备,获取宝物等可以战斗,可以撤退。核心战斗演示效果如下:
,时长01:35

注:素材包来自《Unity资源商店》,可商用

【本课程将学到】:
(1):完整的第三人称射击类的"搜打撤"玩法的策划案,数值与成长体系;
(2):完整的第三人成射击类的”地图编辑器“的工具开发;
(3):学到Unity/Cocos双引擎3D第三人称射击类游戏的开发与设计;
(4):基于全免素材,如何来做商业化设计;
(5):基于Unity发布微信小游戏方案与踩坑;
(6):获得Cocos使用Unity编辑器导出数据来构建更高效的工作流;
850

被折叠的 条评论
为什么被折叠?



