Adventure-Creator-3Dtutorial-Part3
Head turning
要想实现转头效果,首先打开Settings manager,在Hotspot settings里面,勾选Player turns head to active Hotspot
然后选择Player(EL_TinPot),如果勾选Use IK for head-turning。并且Player素材的Rig——Animation Type是Humanoid,且在Base Layer勾选了IK Pass(暂时未知),那么就直接可以转头了
因为robot素材是Generic的animation type,所以不要勾选Use IK for head-turning
选中Player,然后在animator窗口中,新建两个float参数,分别命名为HeadYaw(水平转头)、HeadPitch(垂直转头)。然后新建一个Layer,命名为HeadTurning,点击这个图层的设置,设置优先级为1,混合模式为Additive
在HeadTurning图层中,新建Create State——From new blend tree,命名为HeadDirection
双击进入HeadDirection,选中Blend Tree,添加4个Motion Field,将素材文件里面的Look类的动画拖拽进来,如下图设置
选中EL_TinPot,在Mecanim parameters里面,将参数输入进去,按照脚本默认,也是上个步骤中Pos X和Pos Y参数正负设置的原因
开始游戏,鼠标悬停在HotSpot上,人物会转头
Importing Templates
下载官方提供的一个UI模板来更换当前默认的交互UI,在菜单栏点击Adventure Creator——Online Resources——Downloads,在官网中下载UI template:Walking Dead-style,然后在Assets菜单里面import custom package即可
下载后的资源在Assets——AdventureCreator——Downloads文件夹里,双击打开文件夹然后双击WalkingDead_ManagerPackage,或者单击WalkingDead_ManagerPackage然后在inspector窗口中点击assign managers
和AC默认的UI系统相比,下载的资源使用的是Unity UI Prefab作为Source,这种源随时可以直接转换成Adventure Creator作为源
接下来进入Settings Manager,修改一下被覆盖的重要参数,首先把Save filename改为My3DGame、Player prefab改为My 3D Game文件夹下的EL_TinPot、然后再次勾选上Player turns head to active Hotspot
选择SetGeometry下的Lift和LaserGun,给他们添加Highlight Component,然后分别选择他们对应的Hotspot,添加Highlight
再次进入Menu Manager,然后将Asset file换回My3DGame Manager,将其中的Pause、Save、Load、Options菜单分别复制,然后回到WalkingDead_MenuManager点击Paste menu按钮粘贴回来,注意需要一个一个分别复制。然后将复制过来的source都改为unity UI Prefab
Creating an NPC
将TutorialFiles——EvilLair——EL_Brain放在场景里,关掉Animator组件里的Apply Root Motion
点击菜单栏的Adventure Creator——Editors——character wizard,在弹出的窗口中直接点击Next——NPC、名字叫Brain、将EL_Brain拉取进去——然后一路点击Next、finish,
将人物创建后默认生成的Hotspot、Capsule Collider和Rigidbody都删除,点击Scene Manager,选中EL_Brain中的Brain模型(需要它的坐标),然后点击Hotspot,创建新的
旋转缩放一下生成的Hotspot,覆盖到Brain模型的表面就可以,
选中EL_Brain,放在NPCs父对象下,将其中的Mecanim parameters参数都删除,选中其中的Brain模型,添加Highlight。
然后再选中Hotspot_Brain,输入Label——Brain,添加Brian highlight,添加Walk-to Marker,将这个Marker的Y坐标设为零,放在平台旁边有Navigation范围的地方,我们可以打开Navigation窗口确认范围
点击My 3D Game文件夹,再新建一个Animator Controller,命名为BrainController,将Brain文件夹EL_Brain里的3个动画文件放进去,将Idle设为默认,
新建Bool参数IsLookingAtPlayer和Trigger参数DodgeLaser,在Base Layer 中,将Idle和LookPlayer互相设置Transition,并使用IsLookingAtPlayer参数,而且将两个过度动画的HasExitTime都关掉。将Any State向DodgeLaser设置过度,将过度的Has Exit Time和Can Transition To Self关掉,Condition设置为DodgeLaser。然后DodgeLaser向Idle过度,无需修改参数
选择EL_Brain,将BrainController放进Animator里面
An opening Cutscene
首先,在Scene Manager里面新建一个SimpleCamrea,命名为RevealCam,设置一下它的位置,俯瞰Brain和LaserGun
然后在Scene Manager里面新建一个Cutscene,命名为Intro Animation,编辑它的actionlist
接下来会是一大串的节点操作,这里不截图了,使用数字列表表示
- Camera:Switch——New camera-Camera_Lift——Transition time-0
- Object:Teleport——Is Player-true——Teleport to-Marker_Inside Lift——Copy rotation-true
- Camera:Fade——Wait until finish-true
- Object:Animate——Animation engine-Mecanim——Animator-Lift——Parameter to affect-State——Parameter type-Int——Set as value-1
- Object:Send message——Object to affect-Lift Collider——Message to send-Turn off
- Engine:Wait——Wait time-0.5
- Character:Move to point——Is Player-true——Marker to reach-PlayerStart——Wait until finish-true
- Engine:Wait——Wait time-0.5
- Object:Animate——Animation engine-Mecanim——Animator-Lift——Parameter to affect-State——Parameter type-Int——Set as value-2。这里点选节点3的右侧小齿轮——Copy——点选节点6右侧的小齿轮——Paste after
- Object:Send message——Object to affect-Lift Collider——Message to send-Turn on
- Character :Face object——Affect Player-true——Face with-head——Object to face-EL_Brain。选中EL_Brain下的rBrain,从里面的子对象里面找到Neck,然后再选中EL_Brain,将Neck拉取到Bone transforms——Neck bone里面,这样做是因为之前创建NPC的时候,EL_Brain的transform是在整个场景中央的,Player的face就不能面对Brain了,使用这个neck骨骼的位置,就可以正常转头了
- Dialogue:Play speech——Player line-true——Line text-我才离开了5分钟
- Camera:Switch——RevealCam——Transition time-0
- Engine:Wait——Wait time-0.5
- Dialogue:Play speech——Speaker-EL_Brain——Line text-喂,快来帮一下啊
- Character:Face object——Affect Player-true——Face with-head——Stop looking-true
- Camera:Switch——Return to last gameplay——Transition time-2——Move method-Custom curve
Cutscene完成之后,可以先运行游戏,然后在ActionList Editor窗口的右上角有一个Run的按钮,点击后就可以触发Cutscene
在AC Game Editor中,点击进入Variables manager,创建一个Local的变量,把它的Label改为Seen opening cutscene,其余默认
回到Intro Animation的Action list,添加
- Variable:Set——Source-Local——Statement-true
在AC Game Editor中,点击进入Scene manager,创建一个On start的Cutscene,编辑OnStart的actionlist
- Variable:Check——Source-Local——Boolean-True——If condition is not met-Run Cutscene-Intro Animation
这样开局cutscene就不会每次进入场景就播放了
Skipping Cutscenes
想要跳过开场场面,首先点击Intro Animation这个Cutscene,在inspector中的Is skippable确保被勾选
在菜单栏中点击Edit——Project Settings打开窗口点击Input manager,Size改为21,将新建的输入名称改为EndCutscene,Positive Button改为tab。这里的名称是根据settings manager里面的Available Inputs输入的
最后进入Intro Animation的Actionlist,这里复制一下Object:Animate(Lift - State)节点,粘贴在最后,将State改为0,这样按TAB键跳跃场景的时候就不会有动画播不完的情况了