Unity 3D脚本编程与游戏开发(3.5)

这篇具有很好参考价值的文章主要介绍了Unity 3D脚本编程与游戏开发(3.5)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

6.2.8 总结和拓展

        本节利⽤Unity官⽅素材,以有限的篇幅解释了动画状态机的原理,以及动画制作中最基本但最重要的步骤。总的来看,⽬前的动画只做了4种状态——站⽴、⾛、跑和跳跃,还缺少下蹲、下蹲移动和落地缓冲等动作。好在这些动作只是对现有动作的平⾏扩展,想要进⼀步学习,完全可以借⽤标准资源包中已做好的动画状态机,并参考已有案例制作,这样会事半功倍。

6.3 三维模型与动画的导⼊

        从知识体系上来讲,3D模型与动画资源的导⼊不完全属于动画系统。但在实践中,导⼊资源与制作动画息息相关,导⼊资源时的设置会对后续动画状态机制作、脚本编写都有很⼤影响。因此本节从实⽤的⾓度出发,对3D模型与动画的导⼊做⼀个详细的讲解。

6.3.1 导⼊⽰例

本节仍然使⽤标准资源作为学习参考,该资源的下载⽅法在第6.2节已经介绍过。导⼊资源后打开SampleScenes/Scenes/CharacterThirdPerson场景,即可看到⼀个第三⼈称视⾓的场景,主⾓在屏幕中央,如图6-24所⽰。
Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

运⾏游戏进⾏测试,可以⽤键盘控制⾓⾊的移动,⽤⿏标改变镜头的朝向;按住Shifit键可以⾛路,还可以按空格键跳跃,按住键盘C键下蹲,且下蹲时仍然可以慢慢移动。仔细测试和观察,特别注意以下⼏点。
        第⼀,先向前跑,再突然向后跑,有转⾝、减速再加速的动作。
        第⼆,观察跑步与转弯跑步(斜向移动并转动视⾓),在⼀边转弯⼀边跑步时,⼈物有真实的侧倾动作,⽽且转弯跑⽐直线跑速度慢⼀些。
        第三,按住Shift键可以⾛路,⾛路⽐较慢,但动画过渡看起来更清楚。
        此⽰例场景集中展⽰了3D⾓⾊的控制与动作,⽽且动作极为逼真细腻,符合现在流⾏的“3A”游戏的⼈物动作标准。但它的动画状态机⽐前⾯的2D动画更复杂,接下来就详细讲解其中的各个细节。

6.3.2 三维模型资源设置

        ⽬前,常⻅的3D⾓⾊动画都是⾻骼动画,只不过有⼈形⾓⾊与⾮⼈形⾓⾊的区分。这些动画参数繁多,且有着复杂的规格,显然不能像2D动画那样在Animation窗⼝中简单制作,⽽是需要事先在专业的三维制作软件中制作,然后导出配套的模型和动画⽂件,供Unity使⽤。

⽰例场景中的⾓⾊的名字叫Ethan,它的模型⽂件路径是StandardAssets \Characters \ThirdPersonCharacter \Models \Ethan.fbx。可以看出Unity⽀持FBX格式的模型⽂件。
⼩知识
常⽤的3D⽂件格式

三维设计有着很多细分领域,⼈物建模、游戏建模、场景建模、雕刻和家装设计等。不同领域流⾏使⽤的软件不同,各种软件的保存格式也各有不同。
        有⼀些模型格式相对通⽤,在各个软件之间有较好兼容性,如FBX、DAE、3DS、DXF、OBJ等。⽽仅适⽤于某个软件的特殊⽂件格式就更多了,不胜枚举。从原理上来说,这些⽂件的内容具有相似性,都需要记录三维空间中的点、三⾓⾯、贴图、材质、UV、⾻骼和动画等数据。某些⽂件规则简单,仅记录纯模型数据,不记录⾻骼、贴图等其他数据。

        Unity对多种常⽤和不常⽤格式都有⽀持,但是某些格式只是部分⽀持。在实际游戏开发中,不统⼀的⽂件格式很容易带来各种各样的细节问题,因此应当尽可能使⽤相对完善、更通⽤的FBX三维模型格式。
        FBX格式可以保存模型、材质、贴图、⾻骼和动画等多种信息,⾜以满⾜游戏开发的需求。⽽且⽬前⼤部分三维设计软件都⽀持导出FBX格式的⽂件,这样就打通了⼯作流程的上下游,统⼀了资源的规格。
        对Unity使⽤者来说,虽然不需要关⼼模型的制作,但是要想将原始模型⽂件转化为Unity中可⽤的资源,还是需要了解资源的导⼊设置的。
        选中任意FBX⽂件,可以在Inspector窗⼝中看到模型的导⼊设置,如图6-25所⽰。

Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

        可以看出模型的导⼊设置主要分为Model(模型)、Rig(⾻骼绑定)、Animation(动画)和Materials(材质)4个部分。⽽选中每⼀部分⼜有很多选项,这⾥只对最重要的选项进⾏介绍。
        ⾸先是Model标签⻚。该部分最重要的选项是Scale Factor(缩放系数),此系数⽤于对原始模型进⾏缩放,极为重要。由于三维软件的导出设置不同,导致⽂件中的单位1在Unity中对应
的⻓度不同,有可能是1⽶、2.54厘⽶(1英⼨),也有可能是1厘⽶,因此必须在导⼊时设置缩放⽐例。其他选项都⾮常细节,保留默认值即可,暂不介绍。
        其次是Rig标签⻚,如图6-26所⽰。3D动画出现问题,往往是因⾻骼设置不正确导致的。该部分的第⼀项Animation Type(动画类型)可选None(⽆⾻骼动画)、Legacy(旧版本引擎⽀持的⾻骼动画)(通常不再使⽤)、Generic(通⽤⾻骼)、Humanoid(⼈形⾻骼)。

Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

⽬前使⽤的Animation Type主要是后两者,开发者需要根据⾻骼的类型决定使⽤Humanoid还是Generic。
⼩提⽰
尽量不要在场景中改变物体的缩放⽐例从理论上来讲,导⼊模型时将其缩⼩为原来的1/100与在场景中将物体缩⼩为原来的1/100,看起来是⼀样的。但实际上,在场景中缩放物体会带来很多⿇烦,如⼦物体也会⼀起被缩⼩,引擎⽆法判断模型的渲染精度,从⽽影响运⾏速度。⽽提前设置模型缩放,可以避免很多⿇烦,也可以让引擎更好地优化物体的渲染。在选择了Animation Type以后,下⽅的Avatar Definition(⾻骼定义)则是⽤于设置⾻骼数据来⾃哪⼀个模型。为什么需要选择它呢?这主要是由于3D⾻骼动画的模型、⾻骼定义与动画都允许独⽴保存,⽽且允许不同的模型复⽤同⼀个⾻骼或动画(前提是能够匹配)。例如,有3个FBX⽂件A、B、C,完全可以让A⽂件提供模型,B⽂件提供⾻骼,C⽂件提供动画,这种设计⼗分便利,但也让导⼊设置变得更复杂了。

        如果选择Create From This Model(从该模型创建),就会使⽤本⽂件提供的⾻骼定义。如果是⼈形⾻骼,则会出现⼀个Configure按钮,单击此按钮可以进⾏具体的⾻骼定位操作。通常⼈形⾻骼可以被⾃动识别,只有出现问题的时候才需要详细查看,因此具体的⾻骼设置操作就不做介绍。
        再次是Animation标签⻚,如图6-27所⽰。该部分很简短,在中间有⼀句提⽰信息“No animation data available in this model.”,意思是本模型不包含动画信息。这说明该模型的动画是由其他⽂件提供的。既然不包含动画数据,那么勾选或不勾选Import Animation(导⼊动画)选
项都没有影响。

Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

最后是Material标签⻚,如图6-28所⽰。该部分设置只影响材质的导⼊,不影响模型和动画。它的主要参数分别如下。
Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

        ⼀是Import Materials(导⼊材质)。
        ⼆是Location(材质路径)。选择Use External Materials(Legacy),Unity就会在其他⽂件中去查找材质,如果找不到还会在此素材的⽂件夹下创建材质;⽽选择From Model's Material,则会尝试导⼊当前模型⽂件所具有的材质数据。
        三是Naming选项和Search选项,它们都是影响材质⽂件的查找算法。
        实际上,即便没有正确定位材质,仍然可以在使⽤时指定模型的材质球,如创建材质并拖曳到物体上的操作。正确设置模型导⼊参数以后,就可以使⽤了(注意单击Apply按钮让修改⽣效,单击Revert按钮取消修改)。如果出现设置错误,都会有详细的警告信息或错误信息。由于⽬前采⽤的模型已经设置好了,因此可以直接将模型⽂件拖曳到场景中进⾏测试,观察模型⼤⼩和材质是否正确。

6.3.3 三维动画资源设置

        在模型设置中可以看到,主⾓的模型⽂件Ethan.fbx是不包含动画的,那么动画资源在哪⾥呢?标准素材中的动画资源位于StandardAssets \Characters \ThirdPersonCharacter \Animation⽂件夹下。
1. 动画⽂件中的多种内容
在Animation⽂件夹下可以看到很多动画⽂件,它们的⽂件类型都是FBX格式。⽽且在Unity中,FBX⽂件图标的旁边都有⼀个⼩三⾓,如图6-29所⽰。

Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

        单击下蹲动画HumanoidCrouch⽂件旁边的⼩三⾓,可以看到详细的列表,下⾯将做⼤致的解释。
        Hips代表⾻骼的根节点。Hips的字⾯意思是臀部,⼈形⾻骼常常以臀部作为⾻骼的起始节点。
        接下来的⼀系列⼩三⾓图标的资源,都是⼀个个动画⽚段,根据名称可以看到有下蹲静⽌、下蹲左转、下蹲右转、下蹲⾛路等。选中任意⼀个动画,都会在屏幕右下⾓显⽰⼀个预览窗⼝,如图6-30所⽰。
        在该窗⼝中可以播放动画进⾏预览,还可以通过⿏标旋转和移动模型来进⾏观察。值得⼀提的是,在窗⼝的右下⾓,有⼀个⼩⾻骼图标。单击该图标,打开菜单,其中有Auto(⾃动)、Unity Model(默认模型)和Other(其他模型)3个选项。Unity默认会⾃动搜索动画⽂件对应的模型,如果找不到则会使⽤默认的⼈物模型(图中⾝穿⿊⽩服装的⾓⾊),⽽选择Other就可以指定模型。这⾥可以选择Other,搜索Ethan,找到正在使⽤的模型。

Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

                                                        图6-30 动画预览窗⼝
⼩提⽰
动画预览窗⼝的重要⽤途在修改动画设置时,有时需要试验和调试,动画预览窗⼝可以帮助我们快速测试动画设置是否正确。
        有些动画完全符合⼈形动画规则,⽤对应的模型或Unity提供的模型都可以正常播放,⽽还有些动画则只能⽤对应的模型播放。如果在动画预览窗⼝中出现动画⽆法播放、原点位置不对等情
况,往往是动画设置或者模型设置有问题。特别注意模型设置与动画设置要⼀致,例如同⼀套动画的FBX⽂件缩放⽐例不同,那么⼀定会影响动画播放。
        回到模型⽂件,在列表的最后有⼀个⾻骼图标,名为HumanoidCrouchAvatar,它是动画对应的⾻骼定义。这些动画资源和⾻骼列表都只有在FBX⽂件导⼊设置完成后才会出现。
2. 动画导⼊设置
        选中下蹲动画⽂件HumanoidCrouch,在右侧可以看到熟悉的模型导⼊设置界⾯。因为3D模型和动画⽂件格式相同,所以设置界⾯也是⼀样的。Model标签⻚与之前的模型⽂件Ethan.fbx的是⼀致的,Rig和Materials标签⻚也不再赘述,⽽Animation标签⻚与之前⼤不相同,如图6-31所⽰。因为Unity已经识别到了模型中有很多动画数据,所以出现了很多信息和选项。

Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

Animation标签⻚的选项解释如下。
①Import Constraints(导⼊约束)。在某些三维软件中,动画设计师可以指定⾻骼之间的约束关系,这⾥没有勾选则不导⼊约束。
②Import Animation(导⼊动画)。
③Anim. Compression(动画压缩)。此项和3个以Error结尾的选项都与动画数据压缩有关,保留默认值即可。其中3个以Error结尾的选项指的是允许的误差,值越⼩误差越⼩,也就越精确,建议取默认值。
④Animated Custom Properties,FBX⽂件⽀持添加⾃定义属性,特殊功能不做解释。
⑤Clips(动画⽚段列表),能够看到⼀个FBX⽂件可以包含多个动画⽚段。
3. 动画⽚段的设置
观察图6-31中的每个动画⽚段,会发现每个⽚段都有⼀个开始时间和结束时间。再结合图6-32中的时间轴可以想到,原来⼀个动画⽂件可以看成⼀个很⻓的、完整的时间轴,每个动画⽚段都是整个动画的⼀⼩段。
知道了这⼀点,就可以根据实际需求修改动画的时间,如加⻓或减少动作的预备时间等,甚⾄还可以添加新的动画⽚段,在原有时间轴上截取即可。添加或删除动画⽚段,都是⽤列表右下⾓的加号或减号按钮操作。
选中了⼀个动画⽚段后,就可以查看和修改它的详细设置了,如图6-32所⽰。
Unity 3D脚本编程与游戏开发(3.5),Unity 3D脚本编程与游戏开发,unity,3d,游戏引擎,游戏开发,3D建模,三维模型与动画的导⼊,Unity 3D脚本编程

图6-32 动画⽚段的设置(部分截图)
每⼀个动画⽚段都可以设置以下内容。
①动画⽚段的名称。
②Start(起始时间)和End(结束时间)。
③Loop Time(循环时间),可以让动画循环或不循环。⼦选项Loop Pose可以让开头和结尾平滑衔接,读者可以通过预览体会。⽽Cycle Offset选项可以让第⼆次循环的开头与动画开头有⼀个时间差,它也是为更流畅的循环衔接⽽准备的。
④Root开头的⼏个选项都与Root Motion(根⾻骼动画)有关,后⾯在解释根⾻骼动画时再说明。
⑤Mirror(镜像),可以让动画镜像翻转。
⑥Curves(动画曲线),⽤曲线调整动画的播放速度,可以修改动画的播放节奏。
⑦Events(动画帧事件),可以在动画播放到某⼀时刻时触发脚本函数,这在后⾯的进阶内容会讨论。
⑧Mask(动画遮罩),可以让动画控制或不控制某些⾻骼,这样可以仅使⽤动画的⼀部分。例如,下蹲动画中,可以利⽤遮罩仅让腿部下蹲,⼿部不动。
⑨Motion和Root Motion Node,选择根⾻骼动画以哪⾥为原点。
⑩Import Messages(导⼊信息),设置时要注意查看提⽰信息和错误信息。
以上就是关于动画设置的全部内容了,某些⾼级设置会在本章末尾详细讲解。总的来说,动画设置涉及了美术设计师与技术⼈员的协作,因此内容⽐较繁杂,学习时建议先通过实例了解主要选项的作⽤;未来在导⼊其他资源时⼀定会遇到各种各样的问题,到那时可以再通过仔细阅读相关内容加以解决。
 文章来源地址https://www.toymoban.com/news/detail-846914.html

到了这里,关于Unity 3D脚本编程与游戏开发(3.5)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 3D脚本编程与游戏开发(2.8)

    5.1.2 矩形变换(Rect Transform)组件         如果选中界⾯上的控件,读者会发现每个物体并不带有基本的Transform组件,取⽽代之的是Rect Transform(矩形变换)组件。其实Rect Transform组件是Transform组件的⼦类,因此并不违反“每个物体必须有且只有⼀个Transform组件”的规定。

    2024年02月03日
    浏览(37)
  • Unity 3D脚本编程与游戏开发【4.0】

    7.2.3 DOTween插件使⽤⽅法简介 缓动动画既是⼀种编程技术,也是⼀种动画的设计思路。从设计⾓度来看,可以有以下描述。 ①事先设计很多基本的动画样式,如移动、缩放、旋转、变⾊和弹跳等。但这些动画都以抽象⽅式表⽰,⼀般封装为程序函数。 ②动画的参数可以在使⽤

    2024年04月09日
    浏览(48)
  • Unity 3D脚本编程与游戏开发(3.4)

    6.2.3 动画的制作步骤         接下来为⾓⾊配上动画,整体思路分以下3个部分。⼀是准备好单个的动画素材,包含站⽴、跑和跳等动作。也就是说,把原始素材中的图⽚串联起来,形成⼏个单独的动画。⼆是⽤Animator把这些单独的动作有机地组合起来,形成⼀张状态转移

    2024年04月26日
    浏览(36)
  • Unity 3D脚本编程与游戏开发(2.2)

    3.2.7 修改物理材质         每个物体都有着不同的摩擦⼒。光滑的冰⾯摩擦⼒很⼩,⽽地毯表⾯的摩擦⼒则很⼤。另外每种材料也有着不同的弹性,橡⽪表⾯的弹性⼤,硬质地⾯的弹性⼩。在Unity中这些现象都符合⽇常的理念。         虽然从原理上讲,物体的摩擦⼒

    2024年02月04日
    浏览(40)
  • Unity 3D脚本编程与游戏开发【4.2】

    8.2.3 ⾳频管理器         在实际游戏开发中,⾳效既是⼀个相对独⽴的部分,⼜与其他游戏逻辑密切关联。也就是说,与⾳效相关的代码会插⼊很多细节代码中。         ⽽且在⾳效⾮常丰富的情况下,如果每⼀个游戏模块都单独播放⾳效,那么可能会带来⼀些问题。

    2024年04月24日
    浏览(43)
  • Unity 3D脚本编程与游戏开发【3.8】

    6.4.5 动画层         图6-42显⽰了动画层设置窗⼝。在动画状态机⾥可以添加很多层,层之间可以是覆盖关系也可以是叠加关系,当然也可以随时屏蔽⼀些层、启⽤另⼀些层。 每⼀个动画层可以有单独的设置,其选项解释如下。 ①Weight(权重),本层对总体动画效果的影

    2024年04月16日
    浏览(47)
  • Unity 3D脚本编程与游戏开发【3.7】

            在这个⾓⾊控制脚本中,可以看到很多新奇的写法。关键是,为什么要把移动量转化为转⾝量和前进量呢?要理解这个问题,⼀定要多进⾏游戏测试,体会转⾝与输⼊的关系。         当⾓⾊⾯朝前,输⼊朝后时,⾓⾊的前进量为0,转⾝量达到最⼤;⽽当⾓⾊

    2024年04月15日
    浏览(40)
  • Unity 3D脚本编程与游戏开发(2.6)

    4.5.2 四元数的概念         四元数包含⼀个标量分量和⼀个三维向量分量,四元数Q可以记作Q=[w,(x,y,z)]         在3D数学中使⽤单位四元数表⽰旋转,下⾯给出四元数的公式定义。对于三维空间中旋转轴为n,旋转⾓度为a的旋转,如果⽤四元数表⽰,则4个分量分别为

    2024年02月03日
    浏览(51)
  • Unity 3D游戏开发+脚本编程完整指南:制作第一个游戏:3D滚球跑酷

    教程相关资源 Unity 3D游戏开发+脚本编程完整指南(工程文件+PPT).zip 本节利用前面的知识来实现第一个较为完整的小游戏,如 图 1-21 所示。 图1-21 3D滚球跑酷游戏完成效果 1. 功能点分析 游戏中的小球会以恒定速度向前移动,而玩家控制着小球 左右移动来躲避跑道中的黄色障

    2024年02月21日
    浏览(51)
  • Unity物理系统脚本编程(上)

    当一个物体挂载了刚体时,即可在脚本中获取该物体的刚体组件,代码如下 Rigidbody rigid; void Start() { rigid=GetComponentRigidbody(); } 一般将刚体变量命名为rigid并定义为一个字段,方便复用. 最常用的施加作用力的方法是AddForce(),参数为Vector3类型。代码如下 rigid.AddForce(new Vector

    2024年02月04日
    浏览(100)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包