【发布时间】:2016-11-02 18:49:44
【问题描述】:
这是统一 3D 的代码。我将其更改为 2D 形式,但对象不会在 2D 世界中移动。作者说我把词从3D改成2D就好了,但我好像漏掉了什么。
private bool flag = false;
private Vector2 endPoint;
public float duration = 50.0f;
private float yAxis;
void Start()
{
yAxis = gameObject.transform.position.y;
}
void Update()
{
if ((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetMouseButtonDown(0)))
{
RaycastHit hit;
Ray ray;
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
flag = true;
endPoint = hit.point;
endPoint.y = yAxis;
Debug.Log(endPoint);
}
}
if (flag && !Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude))
{
gameObject.transform.position = Vector2.Lerp(gameObject.transform.position, endPoint, 1 / (duration * (Vector2.Distance(gameObject.transform.position, endPoint))));
}
else if (flag && Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude))
{
flag = false;
Debug.Log("I am here");
}
}
【问题讨论】:
-
flag是否曾经设置为 true? -
@Dawnkeeper 是的,看看里面
if (Physics.Raycast(ray, out hit)) -
我的意思是代码在调试时是否真的到达了这条指令。 =) 他可能不会受到 Raycast 的命中。
-
嗯,好的。我虽然你的意思是他没有在代码中的任何地方将其设置为 true