Unity变换,位置

问题描述 投票:0回答:1

我面临的问题如下:

在玩游戏之前,圈子位于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);
    }

感谢您的帮助

c# unity3d 2d
1个回答
1
投票

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

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

这是将您的变换设置为位置(1,0,0)。

不完全确定你想要完成什么,但也许你的意思是将坐标添加到位置?

transform.position += new Vector3(x, y, 0);
© www.soinside.com 2019 - 2024. All rights reserved.