public void OnMove(UnitComponent component, FourDirection direction) { var root = ToPoint(component.Point); var prePoint = CalcNextPoint(root, direction); if (IsOutOfScene(prePoint)) // TODO:超出地图范围 { return; } if (Grids[prePoint.X, prePoint.Y].Type != TiledType.Normal) { return; } if (Grids[prePoint.X, prePoint.Y].Unit != null) { // 已经存在单位 - 切换为攻击模式 } else { Grids[root.X, root.Y].Unit = null; component.Point = ToVector3(prePoint); Grids[prePoint.X, prePoint.Y].Unit = component; // component.transform.position = component.Point; } }
public Point CalcNextPoint(Point root, FourDirection direction) { switch (direction) { case FourDirection.Top: return(root + UnitConst.Top); case FourDirection.Bottom: return(root + UnitConst.Bottom); case FourDirection.Left: return(root + UnitConst.Left); case FourDirection.Right: return(root + UnitConst.Right); default: return(root); } }