第十一章 地图动作与地图事件(Map Action and Map Event)
我们已经有了剧本,而且可以运行剧本,但我们还缺少对地图的操作控制。
我们这一章来完成地图上的操作,地图的操作将全部由MapAction控制。
文章目录
十一 摄像机(Camera)
这一章,我们来处理摄像机的跟随移动,并测试整章。
1 添加Cinemachine(Add “Cinemachine” Plugin)
在游戏中,我们的摄像机在以下情况需要移动:
-
观察地图(光标移到地图边缘);
-
角色移动到地图边缘;
-
其它情况(某些特殊技能或攻击方式等)。
这并不需要我们自己来写跟随方法,Unity官方提供的Cinemachine已经解决了它们。
我们只需要在Asset Store中搜索Cinemachine并添加到项目中,然后进行相应的设置即可。
在我们的项目中,我们只需要在地图场景中让摄像机跟随鼠标光标(MouseCursor)。
而在需要移动摄像机时,只需要让鼠标光标移动即可。
同时Cinemachine配合Timeline也可以进行复杂的过场动画处理,这暂时不在我们的讨论范围。
在MapAction中加入它们:
using Cinemachine;
在MapAction中添加摄像机字段:
private CinemachineVirtualCamera m_VirtualCamera = null;
而在初始化方法中,寻找场景中的摄像机,并设置它:
/// <summary>
/// 读取地图
/// </summary>
/// <param name="scriptName"></param>
/// <returns></returns>
public bool Load(string scriptName)
{
// 省略部分代码
// 寻找摄像机
virtualCamera = GameObject.FindObjectOfType<CinemachineVirtualCamera>();
if (virtualCamera == null)
{
error = "MapAction -> CinemachineVirtualCamera was not found.";
return false;
}
// 设置摄像机跟随MouseCurosr
virtualCamera.Follow = map.mouseCursor.transform;
// 设置状态
status = ActionStatus.WaitInput;
return true;
}
2 移动摄像机(Move Camera)
移动摄像机就相当于移动MouseCursor。
在平时,我们的MouseCursor在OnMouseMove中已经跟随了鼠标指针。
而在角色移动时,就停止了。这需要我们自己控制,并且每帧进行操作。
每帧操作的方法Update中进行移动控制:
/// <summary>
/// 每帧刷新
/// </summary>

本文介绍了在SRPG游戏开发中如何处理地图动作和地图事件,特别是摄像机的跟随移动。使用Unity的Cinemachine插件,详细讲解了添加Cinemachine、移动摄像机的步骤,包括玩家和NPC的移动控制,以及Cinemachine的设置,如限制摄像机移动范围和调整摄像机阻尼等参数。通过这些设置,实现了摄像机在游戏过程中的平滑跟踪效果。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



