Unity拖拽物体到另外一个物体中的检测相关脚本(萝卜和坑)

本文介绍了如何在Unity中实现鼠标拖动物体(如萝卜)放入特定目标(如坑)的逻辑。通过TriggerEvent进行检测,确保萝卜在未放入坑时返回原位,放入坑后固定。在萝卜进入坑后,设置标记防止其他萝卜再次进入同一坑。当两个坑接近时,通过ID列表解决坑切换时的标记问题。萝卜和坑分别需要添加刚体和碰撞器,坑的碰撞器设置为触发器。
摘要由CSDN通过智能技术生成

从前。。。有个兔子要把得来的几个萝卜埋到坑里面,现在就是检测萝卜埋坑里的方法,讲一下需求:
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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值