Unity摄像机漫游插件(Camera Path Animator 3.5.2)使用教程与下载(动态处理)

虚拟展厅场景漫游用这个插件,没的说。

下载地址:https://download.csdn.net/download/qq_27668853/12822297 (5积分)
现在的积分不好赚啊,csdn完全商业化了

待做功能描述:
1、场景中动态编辑摄像机漫游的路劲,保存数据为List<Vector3>
2、读取CameraPathData,然后根据数据在场景中摄像机漫游。
针对插件所需的功能
1、动态修改路劲点
2、摄像机按照指定路劲移动/旋转

路劲插件现有
1、ITween
2、DoTweenPath
3、CameraPathAnimator
还有其他我未知的插件。。。。

ITween的话,11年用过,好像是以 ITween.AddParm("key",value)这种形式编写,每个参数都是要记忆的字符串,摒弃不用!

DoTweenPath的话,有个弊端,路劲数据只能作为预制物存在,路劲是无法动态修改的,弃之!
制作保卫萝卜等塔防类的,不需要动态修改路劲的项目,这个是优选,

那就剩下CameraPathAnimator了。
CameraPathAnimator是开源的C#脚本,出了问题自己也能修补一二,而且目前的功能,也足以支撑项目的需求。
现在官方AssetStore已经下架该插件了,原因不明。

功能点一:生成实施路劲信息,
其实也就是一个List<vector3>。

功能点二:调用插件的API,实现自己的需求。代码如下


    private float speed = 5;
    private CameraPath cameraPath;
    private CameraPathAnimator cameraPathAnimator;
    void Awake()
    {
        List<Vector3> pathList = new List<Vector3>();
        for (int i = 0; i < 10; i++)
        {
            pathList.Add(new Vector3(2 * i, 3 * i, 4 * i));
        }

        cameraPath.loop = true;//路劲的闭环处理,不是漫游的loop属性,漫游循环得自己处理=>CameraMoveFinished
        cameraPath.Clear();//这里执行后,会报错,原因是报错的地方返回的值是(Nav,Nav,Nav),文末有处理方法
        cameraPath.AddPoint(pathList);//这个AddPoint重载是我自己加的,原插件里没有。
        cameraPath.interpolation = CameraPath.Interpolation.CatmullRom;

        cameraPathAnimator.AnimationFinishedEvent += CameraMoveFinished;
        cameraPathAnimator.animationObject = Camera.main.transform;
        cameraPathAnimator.pathSpeed = speed;
        cameraPathAnimator.orientationMode = CameraPathAnimator.orientationModes.followpath;
        cameraPathAnimator.Seek(0);//这个是摄像机在当前路劲的进度,0:开始,1:结束。所以开始播放的时候设为0,
        cameraPathAnimator.Play();
    }

    private void CameraMoveFinished()
    {//loop处理
        cameraPathAnimator.Seek(0);//重播的时候也设为0,插件在Play的时候,并没有处理这个值。
        cameraPathAnimator.Play();
    }

插件Bug修改如下

CameraPathTiltList.cs

public float GetTilt(float percentage)
    {
        if (realNumberOfPoints < 2)
        {
            if (realNumberOfPoints == 1)
                return (this[0]).tilt;
            return 0;
        }

        if (percentage == 0)//加上这个return就可以了
            return 0;
        ...
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值