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

2024-08-14 16:49:50 浏览数 (1)

本章内容

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、增添控制小猫咪的脚本

代码语言:javascript复制
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添加如下代码

代码语言:javascript复制
GameObject.Find("cat_Idle").GetComponent<AudioSource>().Play();

OnTrackingLost添加如下代码

代码语言:javascript复制
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中激活了

0 人点赞