第十一章 地图动作与地图事件(Map Action and Map Event)
我们已经有了剧本,而且可以运行剧本,但我们还缺少对地图的操作控制。
我们这一章来完成地图上的操作,地图的操作将全部由MapAction控制。
文章目录
三 地图输入(Map Input)
我们的MapAction是游戏地图进行操作的,它包含很多东西。
这一节主要是玩家的输入操作。
不过在操作之前,应该先了解玩家在整个游戏的操作流程。
1 输入条件(Input Condition)
玩家输入的条件应满足如下条件:
-
状态
ActionStatus必须是等待输入状态WaitInput; -
必须是玩家回合
AttitudeTowards.Player; -
地图状态不能是播放动画
MapStatus.Animation; -
地图状态不在事件状态
MapStatus.Event; -
地图状态是菜单
MapStatus.Menu与子菜单MapStatus.SubMenu状态时,确定按键(左键)不可操作,而取消按键(右键)可以操作。
这些很好理解,剧情时不能操作(当然,你可以选择在剧情时按某个按键是跳过剧情);而不是玩家时,我们同样不能操作;播放动画时(例如移动动画,攻击动画等)不能操作;触发事件时不能操作;而在菜单状态,我们的“确定操作”由UnityEngine.UI控制,而取消操作需要我们来控制。
基于以上,创建方法:
/// <summary>
/// 是否可以输入。
/// cancelButton = true: 菜单时可输入
/// </summary>
/// <param name="cancelButton"></param>
/// <returns></returns>
public virtual bool CanInput(bool cancelButton)
{
if (status != ActionStatus.WaitInput || turn != AttitudeTowards.Player)
{
return false;
}
if (mapStatus == MapStatus.Animation || mapStatus == MapStatus.Event)
{
return false;
}
if (!cancelButton)
{
if (mapStatus == MapStatus.Menu || mapStatus == MapStatus.SubMenu)
{
return false;
}
}
return true;
}
2 鼠标移动(Mouse Move)
在地图中,我们的光标是要随着鼠标移动的,这就需要每帧都刷新它的位置。
鼠标坐标转换成地图坐标:
/// <summary>
/// 鼠标转Cell
/// </summary>
/// <param name="mousePosition"></param>
/// <returns></returns>
protected Vector3Int MouseToCellPosition(Vector3 mousePosition)
{
Vector3 worldPosition = Camera.main.ScreenToWorldPoint(mousePosition);
Vector3Int cellPosition = map.grid.WorldToCell(worldPosition);
return cellPosition;
}
每帧刷新光标坐标:
/// <summary>
/// 鼠标移动时的输入
/// </summary>
/// <param name="mousePosition"></param>
public override void OnMouseMove(Vector3 mousePosition)
{
if (status == ActionStatus.WaitScenarioDone)
{
scenarioAction.OnMouseMove(mousePosition);
return;
}
if (!CanInput(false))
{
return;
}
Vector3Int cellPosition = MouseToCellPosition(mousePosition);
map.mouseCursor.UpdatePosition(cellPosition);
}
3 确定按键(OK Pressed)
我们的“确定按键”在鼠标上是鼠标左键

本文是SRPG游戏开发系列的第十一章,主要讲解如何处理地图输入和事件。内容涵盖输入条件、鼠标移动、确定按键的各种状态(如正常、移动范围、攻击范围)以及取消按键的各种响应(如菜单、子菜单、移动范围和攻击范围)。通过这些操作,实现了玩家在游戏地图上的交互控制。
最低0.47元/天 解锁文章
1561

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



