本章内容
1、添加控制角色的虚拟joystick,完成猫咪移动
2、完成猫咪3D声音设计
一、完成猫咪移动
1、导入Unity标准资源包
Unity菜单选择Import Package,导入CrossPlatformInput
2、添加MobileSingStickControl
将Assets/Standard Assets/CrossPlatfromInput/Prefabs的MobileSingSticControl拖动到窗口,删掉其子对象的JumpButton,调整其子对象的MobileJoystick到合适大小,组件中的Movement Range属性设置为50
3、设置猫咪属性
给猫咪添加Rigidbody组件,取消Use Gravity(使用重力)
更改Animation的Size为2,Element 0为Idle,Element 1为Walk
4、增添控制小猫咪的脚本
using UnityEngine; using UnityStandardAssets.CrossPlatformInput; public class CatController : MonoBehaviour { Rigidbody rb; Animation anim; private void Start() { rb = GetComponent<Rigidbody>(); anim = GetComponent<Animation>(); } private void Update() { float x = CrossPlatformInputManager.GetAxis("Horizontal"); float y = CrossPlatformInputManager.GetAxis("Vertical"); //设置小猫的移动速度 Vector3 movement = new Vector3(x, 0, y); rb.velocity = movement * 0.3f; //The velocity vector(速度向量) of the rigidbody //让小猫朝着Joystick引导的方向前进 if (x != 0 && y != 0) { transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z); } //小猫咪切换动画 if (x != 0 || y != 0) anim.Play("Walk"); else anim.Play("Idle"); } }
二、完成猫咪3D声音设计
将第一章下载的音频文件“暹罗猫”放到Resources文件夹,给cat_Idle添加Audio Source组件,将“暹罗猫”音频文件添加到该组件AudioClip上
勾选Loop,取消Play On Awake
Spatial Blend设置为1
Volume Rolloff设置为Custom Rolloff
Doppler Level设置为0
在ImageTarget的DefaultTrackableEventHandler脚本增添代码
OnTrackingFound添加如下代码
GameObject.Find("cat_Idle").GetComponent<AudioSource>().Play();
OnTrackingLost添加如下代码
GameObject.Find("cat_Idle").GetComponent<AudioSource>().Stop();
游戏中可能遇到的问题:
1、Console:The animation state Idle could not be played because it couldn't be found!
解决办法:在本项目中,我们是用Animation来控制猫咪运动,所以在导入的FBX Perfabs—Rig设置时,要设置为Legacy!
当我们用AnimatorController控制运动时,则可设置为Generic
2、Unity不知道如何使用外置摄像头
ARCamera—Open Vuforia configuration—Webcam—Camera Device,选择你需要的摄像头即可
3、用户运行时,显示效果不清晰
解决办法:加入对焦代码,所有资料已放在第一章下载资源里,可到此链接下载该文件,将其附加在ARCamera上