Пример #1
0
    private void Actor_Moved(object sender, EventArgs e)
    {
        _moveCounter = 0;
        var actorHexNode       = (HexNode)Actor.Node;
        var worldPositionParts = HexHelper.ConvertToWorld(actorHexNode.OffsetX, actorHexNode.OffsetY);

        _targetPosition     = new Vector3(worldPositionParts[0], worldPositionParts[1] / 2, actorHexNode.OffsetY - 0.26f);
        _moveCommandBlocker = new MoveCommandBlocker();
        _commandBlockerService.AddBlocker(_moveCommandBlocker);
        GraphicRoot.ProcessMove(_targetPosition);
    }
Пример #2
0
    public void FixedUpdate()
    {
        //TODO Можно вынести в отдельный компонент, который уничтожается после выполнения движения.
        if (_moveCounter != null)
        {
            transform.position = Vector3.Lerp(transform.position, _targetPosition, _moveCounter.Value);
            _moveCounter      += Time.deltaTime * MOVE_SPEED_Q;

            if (_moveCounter >= END_MOVE_COUNTER)
            {
                _moveCounter = null;
                _moveCommandBlocker.Release();
                _moveCommandBlocker = null;
            }
        }
    }