C# Unity-拖动对象的脚本存在问题

C# Unity-拖动对象的脚本存在问题,c#,unity3d,gameobject,C#,Unity3d,Gameobject,我使用下面的c代码在特定的矩形区域内拖动游戏对象。这很好,但我的问题是,我的物体移动太快,为了让它慢下来,我尝试使用一个速度变量。它可以正确地限制x方向上的速度,但由于某些原因,它会完全阻止对象在Y方向上移动。即使我只是尝试减慢X方向作为测试,这种情况也会发生。我的目标是在区域内降低两个方向的速度 请告知我在这里做错了什么,以及我能做的任何改进 using UnityEngine; using System.Collections; public class drag : MonoBehavi

我使用下面的c代码在特定的矩形区域内拖动游戏对象。这很好,但我的问题是,我的物体移动太快,为了让它慢下来,我尝试使用一个速度变量。它可以正确地限制x方向上的速度,但由于某些原因,它会完全阻止对象在Y方向上移动。即使我只是尝试减慢X方向作为测试,这种情况也会发生。我的目标是在区域内降低两个方向的速度

请告知我在这里做错了什么,以及我能做的任何改进

using UnityEngine;
using System.Collections;

public class drag : MonoBehaviour {

public float maxXValue = 9f;

Vector3 dist;
float posX;
float posY;
float speedX = 0.3f;
float speedY = 0.3f;

void OnMouseDown(){
    dist = Camera.main.WorldToScreenPoint(transform.position);
    posX = Input.mousePosition.x - dist.x;
    posY = Input.mousePosition.y - dist.y;
}

void OnMouseDrag(){

    Vector3 curPos = new Vector3(Input.mousePosition.x - posX, Input.mousePosition.y - posY, dist.z);  
    Vector3 worldPos = Camera.main.ScreenToWorldPoint(curPos);

    if (GameManager.instance.gameStart == false) {
        worldPos.x = Mathf.Clamp (worldPos.x, -5f, 5f);
        worldPos.y = Mathf.Clamp (worldPos.y, -13f, -13f);
    } else {
        worldPos.x = Mathf.Clamp (worldPos.x * speedX, -maxXValue, maxXValue);//Even when just limiting the X
        worldPos.y = Mathf.Clamp (worldPos.y, -17.2f, -13f);                  //value the object no longer  
    }                                                                         //moves in the Y direction        

    transform.position = worldPos;
}
}

您已经硬编码了您的值,因此它们当然永远不会更改:worldPos.y=Mathf.Clamp(worldPos.y,-17.2f,-13f);我认为最基本的问题是,当对象移动太快时,它会停止拖动,因为鼠标不再停留在它上面,这会触发
OnMouseExit
,从而打破“拖动”状态。如果您想让它跟随鼠标,甚至超出此范围,则需要使用
Update()