unity3d 中 魔兽人物模型
一、下载并导入Unity仿WOW镜头包
我们需要下载Unity仿WOW镜头包(稍后提供具体下载途径)。下载完成后,导入镜头包(WoW_controller_and_MiniMap_Package.unitypackage)。这个镜头包的作者很贴心地提供了Demo场景,我们可以打开WowCharacterMovementAndCamera/Scenes/Demo Scene。运行游戏后,会看到一个类似球的角色,我们可以直接操作它进行移动。不过经过测试,该镜头包仅实现了WOW里的部分操作,在一些细节方面与WOW存在差异。例如,无法通过拉近镜头切换到第一人称视角,也无法使用左键观察周围环境。
二、通过WMV导出角色模型
1. 从魔兽世界英雄榜获取角色信息
我们可以从魔兽世界英雄榜里找到自己的角色。如果没有角色也没关系,在WMV中可以自行定制。中国大陆的英雄榜链接为:http://www.battlenet.com.cn/wow/zh/ ,在该页面右上角的搜索框中搜索自己的角色,即可进入角色页面。例如我的角色页面(请无视我的装备)。
2. 导入角色到WMV
复制角色页面的链接,打开WMV,选择主菜单→角色→导入英雄榜角色,在弹出的输入框中粘贴链接,点击OK。等待几秒后,人物和装备就会被下载下来。若没有角色,也可以在左边选择Character下面的模型,自定义角色样式。需要注意的是,目前这个版本的WMV只能导出角色带盔甲的模型和动作,像武器附魔之类的效果就无法导出,只能自行想象了。
3. 导出FBX文件
定制好角色之后,选择主菜单→导出模型→FBX。经过一段时间的等待,就可以得到FBX文件和贴图。将这些资源文件导入到Unity的工程面板中,找到Materials下面的材质,修改Shader,这里我们使用Transparent/Coutout/Soft Edge Unlit。
三、在Unity场景中使用自定义模型
关闭Demo场景,打开自己练习用的ElwynnForest场景。在工程面板中找到WowCharacterMovementAndCamera/Prefabs里的Player和MainCamera,并将它们拖入设计视图。此时虽然有了和Demo场景类似的效果,但那个小圆球并没有我们需要的动画,所以需要进行以下操作:
- 把自己的模型拖入
Player,删除原有的CharacterWithAnimation(这会导致游戏对象与预制失去连接)。 - 从
Scripts里把AnimationController重新附加到刚拖入的模型上(这里以BloodElfMale为例)。 - 设置
Animation Controller里所需要的动画名称。 - 由于WMV的导出动画存在BUG,所以要为这个模型附加上之前章节中编写的
WowAnimationFix脚本。 - 把
BloodElfMale拖到Player属性中的Animation Object上,移除原有的Mesh Filter和Mesh Renderer组件。 - 由于导入的角色默认向左,可能需要把
BloodElfMale的Rotation修改为90。
四、相关知识点
1. AnimationController
AnimationController的实现相对简单,它会根据设置的动画名称播放相应的动画。例如,走路时调用Walk()方法,该方法会先判断动画是否存在,然后使用animation.CrossFade()播放动画。使用animation.Play()也可以播放动画,但animation.CrossFade()具有过渡效果。
2. Physics.Raycast()
Physics.Raycast()用于判断两点之间是否有碰撞器,这样可以保证角色不会穿过带有碰撞器的物体。
3. Input.GetMouseButton()
Input.GetMouseButton()用于判断鼠标按键是否按下,其中0代表左键,1代表右键,2代表中键。
4. Input.GetAxis()
Input.GetAxis()可以获取摇杆状态,"Horizontal"表示水平方向,"Vertical"表示垂直方向。
五、完成效果
至此,我们已经可以控制自定义角色了。点击运行游戏,查看最终效果。有了自己的角色后,下一章我们可以尝试把怪物导进来,替换场景中的盒子模型。