62 lines
1.4 KiB
C#
62 lines
1.4 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class AimArrowController : MonoBehaviour
|
|
{
|
|
public Image arrow;
|
|
public Transform projectileParent;
|
|
|
|
float m_attackTime, m_attackLifeTime;
|
|
|
|
void Start()
|
|
{
|
|
//arrow.enabled = false;
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
var unit = IngameMgr.Ins.Get_CurUnitTData();
|
|
m_attackLifeTime = m_attackTime = unit.f_AttackSpeed;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
m_attackLifeTime -= Time.deltaTime;
|
|
if (m_attackLifeTime <= 0)
|
|
{
|
|
m_attackLifeTime = m_attackTime;
|
|
Shoot();
|
|
}
|
|
}
|
|
|
|
public void OnAimStart(Vector2 screenPos)
|
|
{
|
|
UpdateArrow(screenPos);
|
|
}
|
|
|
|
public void OnAimDrag(Vector2 screenPos)
|
|
{
|
|
UpdateArrow(screenPos);
|
|
}
|
|
|
|
void Shoot()
|
|
{
|
|
var unit = IngameMgr.Ins.Get_CurUnitTData();
|
|
ProjectileMgr.Ins.Shoot_Projectile(new ProjectileData
|
|
{
|
|
IsPC = true,
|
|
m_Data = table_projectile.Ins.Get_Data(unit.n_ProjectileID),
|
|
tf_Start = arrow.transform,
|
|
Dmg = unit.n_DefaultAttack
|
|
});
|
|
}
|
|
|
|
void UpdateArrow(Vector2 currentPos)
|
|
{
|
|
Vector2 dir = currentPos - (Vector2)arrow.transform.position;
|
|
|
|
float angle = (Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 45f) * 7.5f;
|
|
angle = Mathf.Clamp(angle, -80f, 80f);
|
|
arrow.rectTransform.rotation = Quaternion.Euler(0, 0, angle);
|
|
}
|
|
} |