Unity - 拖动对象的脚本问题

时间:2017-05-08 22:17:57

标签: c# unity3d gameobject

我使用下面的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;
}
}

0 个答案:

没有答案