虚拟展厅场景漫游用这个插件,没的说。
下载地址: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;
...
}