如何缩小按钮的碰撞箱

How to scale down button hitbox

在我的项目中我有一个按钮,这个按钮有一定的大小并且有children。我的问题是所述按钮的点击框太大,您可以从它显示的图像外部单击它。

为此,我想保留按钮附带的所有动画和事件,但我想缩小它的点击框。要么通过仅允许在图像的非透明部分上调用 OnClick 事件来缩小它,要么通过缩小矩形命中来缩小它这可能吗?我在网上查了下,没说缩小,只说放大。

这是我的按钮的样子:

当我按下按钮时,我更改了 MyButton 的图像并启用了带有动画的发光图像,使其看起来像是在发光。

有什么方法可以缩小按钮的点击框吗?

谢谢。

您可以通过将此脚本添加到所述按钮然后向其添加某种 2D 碰撞器来实现。我将此用于一些不规则的按钮 shape.You 可以使用适合您的按钮的任何对撞机。请注意,还有一种方法可以使点击忽略透明部分,但我更喜欢这种方法。

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(RectTransform), typeof(Collider2D))]
public class Collider2DRaycastFilter : MonoBehaviour, ICanvasRaycastFilter
{
    Collider2D myCollider;
    RectTransform rectTransform;

    void Awake()
    {
        myCollider = GetComponent<Collider2D>();
        rectTransform = GetComponent<RectTransform>();
    }

    #region ICanvasRaycastFilter implementation
    public bool IsRaycastLocationValid(Vector2 screenPos, Camera eventCamera)
    {
        var worldPoint = Vector3.zero;
        var isInside = RectTransformUtility.ScreenPointToWorldPointInRectangle(
            rectTransform,
            screenPos,
            eventCamera,
            out worldPoint
        );
        if (isInside)
            isInside = myCollider.OverlapPoint(worldPoint);
        return isInside;
    }
    #endregion
}