给出一套方案:角色如何自由搭配枪械与武器

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

我们在做“搜打撤”射击类项目时遇到一个需求:"任意的角色,可以自由搭配任意的枪支武器"。今天把我们的方案开源给大家。方案的效果演示如下:

演示效果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编辑器导出数据来构建更高效的工作流;

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值