Unity变换,位置

时间:2019-01-25 19:44:58

标签: c# unity3d 2d

我面临以下问题:

玩游戏之前,圈子位于circle location

按播放时它会转到另一个位置,如下所示 after press play

这是我正在使用的代码,非常确定它是一个if语句问题:

public class circularmouse : MonoBehaviour {
[SerializeField] float timeCounter = 0;
[SerializeField]bool Direction = false;
[SerializeField] float angularSpeed = 0f;

public Vector3 startPosition;

private void Start()
{
    startPosition = transform.position;
}




void Update()
{
    if (Input.GetKeyDown(KeyCode.LeftArrow))
    {
        angularSpeed = 4f;
        Direction = true;
    }
    if (Input.GetKeyDown(KeyCode.RightArrow))
    {
        Direction = false;
        angularSpeed = 4f;
    }
    if (Direction) //if direction is true
    {
        timeCounter += Time.deltaTime * angularSpeed;
        float x = Mathf.Cos(timeCounter);
        float y = Mathf.Sin(timeCounter);
        transform.position = new Vector3(x, y, 0);
    }
    else
    {
        timeCounter -= Time.deltaTime * angularSpeed;
        float x = Mathf.Cos(timeCounter);
        float y = Mathf.Sin(timeCounter);
        transform.position = new Vector3(x, y, 0);
    }

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您的问题是,由于Direction最初为false,因此您将立即转到此行:

transform.position = new Vector3(x, y, 0);

这会将您的变换设置为位置(1、0、0)。

不能完全确定您要完成什么,但是也许您是想将坐标添加到该位置?

transform.position += new Vector3(x, y, 0);