Я нахожусь на своем третьем дне обучения Unity и в настоящее время делаю roll-a-ball tutorial. Я пытаюсь добавить кнопку перезапуска, которая телепортирует мяч обратно в исходное положение/происхождение. Все работает хорошо, но мяч будет продолжать двигаться после перезапуска, но я хочу, чтобы он остался в месте и не двигался сам по себе.Как остановить сферу от перемещения самостоятельно после перезапуска его положения?
То, что я хочу сказать, что если я двигаюсь влево на максимальной скорости и нажимаю 'R' для перезапуска, то он будет продолжать двигаться влево на некоторое время, но я хочу добиться того, что мяч не будет продолжать двигаясь сам по себе после того, как я перезапущу его положение (возможно, скорость просто снижается настолько медленно, что это незаметно, и в этом случае я бы хотел, чтобы она замедлялась быстрее).
Вот мой код, который я только что пробовал и «надеялся» будет работать, но этого не делает. Я думаю, что проблема, которую я имею здесь, заключается в том, что новое значение осиHorizontal/axisVertical variable снова присваивается следующему кадру, значение берется из Input.GetAxis, что из того, что я слышал, невозможно изменить.
Это означает, что движениеForce больше 0/0/0 и AddForce будет снова активировано следующего кадра.
using UnityEngine;
using System.Collections;
public class PlayerScript : MonoBehaviour {
public float movementSpeed = 7f;
private Rigidbody rigidSphere;
void Start() {
rigidSphere = GetComponent<Rigidbody>();
}
void FixedUpdate() {
float axisHorizontal = Input.GetAxis("Horizontal");
float axisVertical = Input.GetAxis("Vertical");
Vector3 movementForce = new Vector3(axisHorizontal, 0.0f, axisVertical);
rigidSphere.AddForce(movementForce * movementSpeed);
if (Input.GetKeyDown(KeyCode.R)) {
transform.position = new Vector3(0, 0, 0);
rigidSphere.AddForce(0, 0, 0);
axisHorizontal = 0;
axisVertical = 0;
}
}
}
Я пытался прибегая к помощи о том, как изменить значение, взятое из GetAxis, но другие утверждают, что это невозможно сделать. Поэтому я понятия не имею, как заставить его не продолжать двигаться навсегда ...
И у меня также появился «бонусный» вопрос, возникший в течение этих двух дней, когда я изучал единство, но они не стоят отдельный вопрос, возможно, если они уже ответили ранее (я не смог найти документацию, которая бы мне помогла мне), то просто дайте мне ссылку, где я могу найти ответ на мою проблему.
Вопрос в том, что как заставить мяч прекратить движение через некоторое время после того, как я нажму кнопку (W/A/S/D, значения по умолчанию для положительных/отрицательных кнопок в Input Manager)? Например, я нажимаю «W» всего на секунду, но мяч будет продолжать двигаться вперед навсегда и никогда не остановится.
Что я хочу достичь после того, как я, например, нажимаю «W» на секунду, через несколько секунд мяч полностью остановится, просто кажется, что значение GetAxis никогда не возвращается к 0. Я попытался Google об этом, и я думаю, что это как-то связано с Gravity в Input Manager - я попытался изменить его, но мяч все равно будет двигаться навсегда, единственное, что я заметил, - это изменение скорости.
Я был бы очень благодарен, если бы кто-то помог мне с этими проблемами.
Я бы сказал, что на R, выяснить силу сферы и применять равный в противоположном направлении (но не спрашивайте меня как). –