Unity 图片手指滑动
时间: 2025-07-05 09:04:23 浏览: 12
### Unity 实现图片拖拽的手指滑动触摸事件处理
在 Unity 中实现图片通过手指滑动进行操作的功能主要涉及使用 `Input` 类来检测触摸输入并相应地移动 UI 图片组件。下面是一个详细的解决方案。
#### 使用单点触控实现基本的拖拽功能
对于简单的拖拽需求,可以监听用户的触摸动作,并根据这些动作更新目标对象的位置:
```csharp
using UnityEngine;
using System.Collections.Generic;
public class DragAndDrop : MonoBehaviour
{
private Vector2 touchOffset;
private bool isDragging = false;
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.touches[0];
switch (touch.phase)
{
case TouchPhase.Began:
// 当首次接触屏幕时记录下当前位置相对于物体中心的距离差值
RectTransform rectTransform = GetComponent<RectTransform>();
Camera cam = Camera.main;
Vector2 localMousePos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(
rectTransform,
touch.position,
cam,
out localMousePos))
{
touchOffset = rectTransform.anchoredPosition - localMousePos;
isDragging = true;
}
break;
case TouchPhase.Moved:
if (isDragging)
{
// 更新位置到新的触摸点加上之前计算出来的偏移量
RectTransformUtility.ScreenPointToLocalPointInRectangle(
rectTransform,
touch.position,
cam,
out var newLocalMousePos);
rectTransform.anchoredPosition = newLocalMousePos + touchOffset;
}
break;
case TouchPhase.Ended:
case TouchPhase.Canceled:
isDragging = false;
break;
}
}
}
}
```
此脚本实现了当用户点击某个可交互的对象(如一张图片),该对象能够跟随手指一起移动的效果[^1]。
为了支持多点触控设备上的更复杂手势识别,比如缩放或旋转,则需要进一步扩展逻辑以区分不同类型的触摸行为,并分别作出响应。不过上述代码已经足以满足基础的拖拽需求。
阅读全文
相关推荐
















