从前。。。有个兔子要把得来的几个萝卜埋到坑里面,现在就是检测萝卜埋坑里的方法,讲一下需求:
1.鼠标拖动萝卜可以放进不同的坑中。
2.当萝卜没有拖到坑中时就返回到原来位置
3.当萝卜拖到坑里时萝卜就放进坑里。
我是用TriggerEvent来检测的,顺便做了一些逻辑,语言描述不够好,还是上代码吧:
using UnityEngine;
/// <summary>
/// 拖拽接口
/// </summary>
public interface IDrag
{
/// <summary>
/// 开始拖动
/// </summary>
void OnStartDrag();
/// <summary>
/// 拖动中
/// </summary>
void OnDrag();
/// <summary>
/// 放下
/// </summary>
void OnDrop();
}
/// <summary>
/// 事件监听处理
/// </summary>
public interface IDispatch
{
/// <summary>
/// 添加事件监听
/// </summary>
void AddEvent();
/// <summary>
/// 移除对事件的监听
/// </summary>
void RemoveEvent();
}
上面是接口,用来描述我拖动中需要做的事情,下面是实现:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DraggerImpler : IDrag{
private GameObjDrag host;
public DraggerImpler(GameObjDrag _host)
{
host = _host;
}
public void OnStartDrag()
{
host.IsDraging = true;
}
public void OnDrag()
{
host.IsDraging = true;
}
public void OnDrop()
{
host.IsDraging = false;
if (host.IsReturn)
{
host.targetTransform.position = host.startTransform.position;
}
else
{
host.targetTransform.position = host.currTransform.position;
}
}
}
上面这个脚本实现了Idrag 接口,因为没想到开始拖和正在拖需要做什么就先不管他,当放下的时候我做了个判断就是这个:
public void