这是一个3D教程,不过可以填补2D教程中没有提到的部分

首先还是下载AC,然后在菜单栏中可以Adventure Creator——Getting Started——load 3D Demo

New Game Wizard

在菜单栏选择Adventure Creator——Getting Started——New Game Wizard,弹出的窗口选择next,Game name输入My 3D Game,Camera Perspective选择3D控制方式选择Direct,Interface选择Choose Hotspot then Interaction,GUI System选择Default AC,最后确定点击Finish

AC Game Editor中的管理文件都会更新

A new 3D scene

  1. 点击Adventure Creator——Online Resources——Downloads,然后在网页中点击Tutorial Asset Files下载

    在Unity——Assets——Import package——Custom package,加载下载的文件,除了Wharf文件夹下面的文件,全都载入

  • 打开TutorialFiles——Set——LaserGun,在Inspector窗口中选择Rig

  • Animation Type选择Generic,Avator Definition选择Create From This Model,点击Apply

  • 在场景中选择Laser Gun,添加Animator组件,并添加LaserGunAvator

  • 打开TutorialFiles——TinPot——EL_TinPot,在Inspector窗口中选择Rig

  • Animation Type选择Generic,Avator Definition选择Create From This Model,点击Apply

  1. 点击AC Game Editor,Scene Settings,点击with folders

    将场景中的Spot light和Directional light都放进_Lights父对象里,EvilLair、LaserGun、Lift都放进SetGeometry父对象里

    将场景中的PlayerStart标志放在电梯门口的部分

    image-20211022144215433

    选中场景中的main camera,移动位置,使它整体显示场景

    image-20211022144534463

  2. 本次角色的移动方式是Direct,所以我们要为场景添加碰撞器

    搜索并选择场景中的Platform,添加Mesh Collider,会自动将场景的mesh放进来

    给场景中的LaserTable、Laser Button(Convex)、Coffee Table(Convex)、Sofa、Bin001(Convex)添加Mesh Collider,注意标Convex的要勾选Convex

  3. 添加Navmesh,即使是Direct的移动方式,NPC或过场动画中也需要Navmesh

    在刚才添加过Mesh Collider的对象中,选择他们的Static Flag

    image-20211022155154430

    点击菜单栏的Window——AI——Navigation,点击Bake——bake

Creating a Player

将TutorialFiles——TinPot——EL_TinPot拉取进来

  1. 像之前一样使用Character wizard创建Player,动画模式选择Mecanim

    创建完角色后,选中TinPot,Tag指定为Player(其实untagged也可以,目前存疑)

  2. AC引擎支持Character Controller组件,使用这个组件来替换Rigidbody和CapsuleCollider,可以有效防止人物上斜坡卡顿的问题

    先移除EL_TinPot中的Rigidbody和CapsuleCollider,然后添加Character Controller组件

    image-20211025104800629

    然后在inspector的player脚本中,在Movement settings里面,将Walk speed scales设为1.5,将Run speed scale设为3

  3. 为了让角色可以跑动,需要在Project Settings——Input Manager里面定义Run的按键

    image-20211025110348969

    可以在AC Game Editor——Settings——Available Inputs里面找到需要定义按键的名称

image-20211025110546784

  1. 定义角色动画

    在Assets——My 3D Game文件夹下新建Animator Controller,并命名为PlayerController,双击打开Animator窗口

    在窗口里面的Parameters新建Float——Speed,然后Base Layer里面右键——Create State——From New Blend Tree,将其命名为Locomotion

    双击Locomotion,选择BlendTree,在Inspector窗口中点击添加三个MotionField然后依次把Robot_Idle、Robot_Walk、Robot_Run拉取进来

    关掉Automate thresholds,然后分别设定自定义的threshold(这个截图的Run和Walk反了,懒得改了)

    image-20211025114616497

    这几个动作都在TutorialFiles——TinPot——EL_TinPot里面

    选择hierarchy窗口里面的EL_TinPot,在inspector窗口中选择Animator,将PlayerController放进去。我们会看到Player脚本里面Mecanim parameters——Move speed float就是Speed。配合我们之前的Walk speed scales,Run speed scale,这就是关掉automate threshold的意义

    我们看到Mecanim parameters还有一个Talk bool,里面有一个IsTalking的变量,这个就是用来确定说话的变量,我们再把它加上

    回到PlayerController的Animator面板,新建Bool——IsTalking,将Robot_Talk动作直接拉取进Base Layer面板,然后命名为Talk,将Talk和Locomotion之间建立两个transition,关掉两个transition的Has Exit Time,并设置他们的IsTalking状态,将Locomotion->Talk设置两个条件,一个是IsTalking是true,一个是Speed Less 0.1,下图还没有添加第二个条件

    image-20211025144109579

将EL_TinPot 拉取进My 3D Game文件夹内,选择Original Prefab,然后在AC Game Editor——Settings Manager——Character settings里面把这个Prefab放进去,这样的话即使Player在Hierarchy窗口中移除,开始游戏时也会直接实例化进去