Как я могу заставить игрока продолжать плавать с того места, где я остановил его? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь заставить мой плеер плавать вверх и вниз, но останавливаюсь, когда удерживаю нажатой кнопку мыши. Отпустив левую кнопку мыши, я хочу, чтобы игрок продолжал плавать с той же позиции. Пока мой код может делать все это, за исключением того, что игрок продолжает плавать с позиции, на которой он был остановлен. Вместо этого игрок останавливается, но затем продолжает плавать с того места, где он был бы, если бы я не остановил его с самого начала.

        public float amplitude = 0.5f;
        public float frequency = 1f;

        void Start()
        {
            rigidbody = GetComponent<Rigidbody2D>();
            // Store the starting position & rotation of the object
            posOffset = transform.position;
            isClick = false;
        }
        void Update()
        {
            if (Input.GetMouseButton(0))
            {
                isClick = true;
            }
            if (Input.GetMouseButtonUp(0))
            {
                isClick = false;
            }

            if (isClick)
            {
                rigidbody.constraints = RigidbodyConstraints2D.FreezePositionY;
                curPos = GetComponent<Rigidbody2D>().position;
            }


            if (!isClick)
            {

                tempPos = posOffset;
                tempPos.y = Mathf.Sin(Time.fixedTime * Mathf.PI * frequency) * amplitude;


                transform.position = tempPos;
            }
        }

1 Ответ

1 голос
/ 25 мая 2020

Вы можете добиться этого, используя

Time.timeScale = 0;

Но имейте в виду, что это остановит Time.deltaTime, но вы можете использовать вместо Time.fixedDeltaTime;

Проверьте документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...