UGUI图片的碰撞检测(新Rigidbody2D组件下)

要点

和3D物体的碰撞一样,都要遵循【主动运行的物体,必须添加刚体;两个物体其中一个,必须勾选“isTrigger”】的原则。可以完全把要碰撞的两个图片当做3D物体,添加相应组件以及代码,但“图片”毕竟是二维物体,宜用2D的组件进行碰撞,且代码也要用2D的方法。(之上“2D组件”包括:BoxCollider2D、Rigidbody2D;“2D方法”是指“private void OnTriggerEnter2D(Collider2D other){}”),要特别注意的是对Rigidbody2D组件的调整:正常添加,BodyType类型是Dynamic,Mass是1,即使把Mass调成0,它仍然显示0.0001——这样会导致图片缓慢下落,因此,需要把BodyType选为Kinematic。
在这里插入图片描述
在这里插入图片描述

情景

图片ImageA加拖拽代码,被鼠标拖着去碰ImageB,碰撞函数打印“碰到了《我的照片》”
在这里插入图片描述

步骤

1、主动运行的ImageA,添加刚体Rigidbody2D,并调整其BodyType为Kinematic;两张图片,都添加BoxCollider2D,并勾选其中一张的IsTrigger,(注意新加上的BoxCollider2D是一个绿点儿,没有尺寸,需调整大小)
ImageA
在这里插入图片描述
ImageB(本次是勾选的ImageA BoxCollider2D组件的IsTrigger)
在这里插入图片描述
2、给ImageA加拖拽脚本、碰撞检测脚本
在这里插入图片描述

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class DragTexture : MonoBehaviour, IDragHandler
{

    public void OnDrag(PointerEventData eventData)
    {

        SetDraggedPosition(eventData);
    }

    private void SetDraggedPosition(PointerEventData eventData)
    {
        var rt = gameObject.GetComponent<RectTransform>();
        Vector3 globalMousePos;
        if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rt, eventData.position, eventData.pressEventCamera, out globalMousePos))
        {
            rt.position = globalMousePos;
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ColliderTest_BoxCollider2D : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("碰到了《 我的照片》");
    }


}

效果动图

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值