在 HandleTouchEndedOrCanceled
函数中,你需要在判断是否在角色身上之后再决定是否进行移动操作。修改代码如下:
void HandleTouchEndedOrCanceled(Touch touch)
{
if (IsTouchedOnPlayer(touch.position)) // 如果结束时在角色身上,则不进行移动操作
return;
Vector2 targetPos = Camera.main.ScreenToWorldPoint(touch.position);
targetPosition = targetPos;
if (currentCoroutine != null)
StopCoroutine(currentCoroutine);
currentCoroutine = StartCoroutine(MoveToTarget());
}
这样就可以保证只有当触摸事件结束时没有在角色身上时才会进行移动操作。