效果:
代码实现:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class SkillButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
GameObject go;
GameObject goo;
GameObject player;
GameObject enemy;
private void Start()
{
player = GameObject.Find("player");
enemy = GameObject.Find("enemy");
}
public void OnPointerDown(PointerEventData eventData)
{
//timeShow = transform.Find("Image/time").GetComponent<Text>();
//imgtime = transform.Find("Image").GetComponent<Image>();
go = Instantiate(Resources.Load<GameObject>("BasicZonePurple")); //大圈(施法的范围)
go.transform.position = player.transform.position;
go.transform.localScale = Vector3.one * 3;
if (Vector3.Distance(player.transform.position, enemy.transform.position) <= 3)
{
goo = Instantiate(Resources.Load<GameObject>("BasicZoneBlue")); //小圈(可移动)
}
}
public void OnPointerUp(PointerEventData eventData)
{
if (go != null)
{
Destroy(go.gameObject);
}
if (goo != null)
{
Destroy(goo.gameObject);
goo = null;
}
}
public void OnDrag(PointerEventData eventData)
{
if (goo != null)
{
//goo.transform.position = enemy.transform.position;
Vector2 v2 = (transform as RectTransform).InverseTransformPoint(eventData.position);
v2 = Vector2.ClampMagnitude(v2, (transform as RectTransform).sizeDelta.x / 2);
Vector2 pos = new Vector2(v2.x / ((transform as RectTransform).sizeDelta.x / 2), v2.y / ((transform as RectTransform).sizeDelta.y / 2));
goo.transform.position = player.transform.position + (new Vector3(pos.x, 0, pos.y) * 3);
}
}
}