Unity-鼠标悬停改变图像位置

教你如何使用Collider作为鼠标悬停的检测区域

📝 前言

之前的教程使用了默认的鼠标事件检测,但有时候我们需要更精确的交互区域控制。今天就来看看如何使用碰撞体(Collider)作为鼠标交互的检测范围,实现同样的悬停偏移效果。

🎯 最终效果

  • 鼠标进入碰撞体区域 → 子物体向左上偏移

  • 鼠标离开碰撞体区域 → 子物体恢复原位

  • 碰撞体可以是任意形状和大小

💻 最简代码实现

使用2D碰撞体的版本

cs 复制代码
using UnityEngine;

public class HoverEffect : MonoBehaviour
{
    public Transform child;
    private Vector3 originalPos;
    
    void Start()
    {
        originalPos = child.localPosition;
    }
    
    void OnMouseEnter()
    {
        child.localPosition = originalPos + new Vector3(-0.5f, 0.5f, 0);
    }
    
    void OnMouseExit()
    {
        child.localPosition = originalPos;
    }
}

代码解析:

  • OnMouseEnter() - 鼠标进入碰撞体时自动触发

  • OnMouseExit() - 鼠标离开碰撞体时自动触发

  • 代码会自动检测挂载在同一对象上的Collider组件

🔧 碰撞体设置步骤

1. 添加碰撞体组件

方法一:Box Collider 2D(矩形区域)

  • 选中物体 → Add Component → Physics 2D → Box Collider 2D

  • 调整Size控制检测区域大小

方法二:Circle Collider 2D(圆形区域)

  • Add Component → Physics 2D → Circle Collider 2D

  • 调整Radius控制检测范围

方法三:Polygon Collider 2D(自定义形状)

  • Add Component → Physics 2D → Polygon Collider 2D

  • 自动匹配精灵形状或手动编辑

⚠️ 重要注意事项

  1. 必须有碰撞体OnMouseEnter/Exit依赖碰撞体,没有就不会触发

  2. 2D vs 3D

    • 2D项目使用 Collider2D

    • 3D项目使用 Collider

    • 不能混用,否则不会触发事件

  3. 相机设置 :主相机必须要有 Physics RaycasterPhysics 2D Raycaster 组件

  4. Layer设置:确保物体所在的Layer在射线检测中】

🎮 运行测试

点击运行按钮!

如图所示,鼠标悬停卡牌移动

相关推荐
Bode_20028 小时前
决策设计方法
人工智能·交互·智能工厂
每周报刊17 小时前
竞速座舱级视界:爱攻 AGP497UCZD 超宽 QDOLED 显示器解析
数据结构·游戏·计算机外设
zhchyun200818 小时前
# 【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(06)
ui·unity·游戏引擎
Behaviour1 天前
Unity游戏HybridCLR 热更新接入实战
游戏·unity·游戏引擎
LONGZETECH2 天前
新能源汽车动力电池实训教学痛点与虚拟仿真技术解决方案
c语言·3d·unity·架构·汽车·汽车教学软件
王维志2 天前
UiSplineRenderer
unity·游戏引擎
FairGuard手游加固2 天前
iOS 游戏加固技术解析:代码混淆、资源加密、内存保护与重签名检测
安全·游戏·macos·unity·ios·objective-c
小幂同学2 天前
笔记本触控板能用鼠标连点器吗?快捷键与位置问题解析
计算机外设·鼠标连点器·连点器
玹外之音2 天前
Codex CLI 非交互模式:把 AI 接入你的 CI/CD 流水线
人工智能·ci/cd·交互
sramdram2 天前
语音识别芯片类别有哪些?离线语音识别芯片交互方案分析
人工智能·交互·语音识别·语音识别芯片·离线语音识别芯片