Vuforia-PocketCat丨4. 完成猫咪的动作的控制及声音设计

本文介绍使用Unity和Vuforia开发AR游戏《口袋猫咪》的过程,包括添加虚拟摇杆实现猫咪移动、设置3D声音播放等关键技术实现。还提供了解决常见问题的方法。

本章内容

1、添加控制角色的虚拟joystick,完成猫咪移动

2、完成猫咪3D声音设计

游戏展示:Vuforia-PocketCat_1.0

 

一、完成猫咪移动

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();

 

若我们想详细观察猫咪细节,建议完成后续的模型脱卡和EasyTouch,实现识别图丢失后的模型显示

模型脱卡地址:模型脱卡

EasyTouch地址:EasyTouch

 

游戏中可能遇到的问题:

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上

 

4、MobileSingleStickControl的MobileJoystick无法在Unity中激活

解决办法:先发布一下Android App,MobileJoystick便可在Unity中激活了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值