﻿using UnityEngine;

public class TowerMover : MonoBehaviour
{
    [SerializeField]
    private Transform _towerTrans;
    [SerializeField]
    private float _rotationSpeed = 10f;

    private Vector3 _targetPos;
    private RaycastHit _hit;

    private void Update()
    {
        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out _hit, 100f, Physics.AllLayers, QueryTriggerInteraction.Ignore))
            _targetPos = _hit.point;

        var oldRot = _towerTrans.eulerAngles;
        _towerTrans.LookAt(_targetPos);

        oldRot.y = Mathf.LerpAngle(oldRot.y, _towerTrans.eulerAngles.y, Time.deltaTime * _rotationSpeed);
        _towerTrans.eulerAngles = oldRot;

        //это галимая коррекция поворота из-за не совсем корректных осей
        var oldLocalRot = _towerTrans.localEulerAngles;
        oldLocalRot.x = 0;
        oldLocalRot.z = 0;
        _towerTrans.localEulerAngles = oldLocalRot;
    }
}
