unity随笔
发布日期:2021-05-08 12:34:00 浏览次数:19 分类:精选文章

本文共 1272 字,大约阅读时间需要 4 分钟。

unity随笔

最近在学习unity拖拽功能时遇到了一个有趣的问题。很多网上的教程看起来很简单,但当我尝试复现时发现有些地方并不是那么直接。比如,拖拽物体的实现并不是简单地写几个方法就能完成的,还需要理解一些隐藏的条件和限制。

以下是我的实现代码:

```csharp
using UnityEngine.EventSystems;
public class CardController : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public static GameObject itemBeingDragged;
private Vector3 startPosition;
private float smoothSpeed = 0.5f;
public void OnBeginDrag(PointerEventData eventData)
{
itemBeingDragged = gameObject;
startPosition = transform.position;
startPosition.x *= 0.001f; // 限制x轴的移动范围
}
public void OnDrag(PointerEventData eventData)
{
// 使用Lerp函数平滑移动
transform.position = Vector3.Lerp(startPosition, Input.mousePosition * 0.001f, smoothSpeed);
}
public void OnEndDrag(PointerEventData eventData)
{
itemBeingDragged = null;
transform.position = Input.mousePosition * 0.001f;
}
}

在实际项目中需要注意以下几点:

  • 物体的移动速度:直接使用Input.mousePosition可能会导致移动速度过快,建议使用Mathf.Lerp来实现平滑移动。

  • 碰撞和层限制:如果物体在场景中被其他物体包围或受到网格限制,可能需要额外检查是否有碰撞或层限制。

  • 组件依赖:拖拽功能需要EventSystems组件和PointerEventData组件,如果这些组件没有正确配置,拖拽功能可能无法正常工作。

  • 物体的拖拽范围:如果物体需要在特定范围内拖拽,可以在OnBeginDrag中添加一些条件判断。

  • 通过以上优化,拖拽效果更加平滑且直观。希望这些内容能帮助其他开发者避免一些常见的陷阱。如果你在实际项目中遇到更多问题,欢迎在评论区留言。

    ```
    上一篇:unity3d-学习笔记12-卡牌游戏制作(实现卡牌的拖拽和打出)
    下一篇:unity3d-学习笔记11-卡牌游戏制作(实现播放音乐)

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2025年05月08日 21时31分38秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    #C8# UVM中的factory机制 #S8.1.4# 约束的重载 2025-03-28
    #C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形 2025-03-29
    #C8# UVM中的factory机制 #S8.4.1# factory机制的实现 2025-03-29
    #C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考 2025-03-29
    .exe已停止工作_windows资源管理器已停止工作怎么解决 2025-03-29
    900行c语言贪吃蛇,原生js实现的贪吃蛇网页版游戏完整实例 2025-03-29
    ado读取多条oracle数据,Oracle ADO数据存取 2025-03-29
    anaconda新建python2环境安装不了jupyterlab_anaconda3安装及jupyter环境配置教程(全)... 2025-03-29
    android fastjson漏洞_初识Fastjson漏洞(环境搭建及漏洞复现) 2025-03-29
    android进程管理策略,Android进程保活 2025-03-29
    asp.mvc 4项目发布文件目录结构_如何用SpringBoot(2.3.3版本)快速搭建一个项目?文末有小彩蛋... 2025-03-29
    aspen串联反应怎么输入_如何进步提升串联谐振试验装置的稳定性 2025-03-29
    a推b等价于非a或b_AB胶/蜜月胶常见问题的原因分析及解决方法 2025-03-29
    bat 命令返回结果_【批处理】带你入门命令行 2025-03-29
    c++ string取子串_Integer与String的设计哲学 2025-03-29
    c++ 数组批量赋值_数组之间不能赋值?穿个马甲吧! 2025-03-29
    cad模糊查询符号_mysql 正则模式和like模糊查询 2025-03-29
    continue可以用if判断里面吗_谁能说说if()else()里的continue是干嘛的? 2025-03-29
    ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用 2025-03-29
    cytoscape安装java_Cytoscape史上最全攻略 2025-03-29