Я новичок в программировании и в настоящее время занимаюсь разработкой бесконечной игры на Unity с помощью c #.
Я застрял в том, чтобы заставить мою систему оценок работать правильно.
Игрок набирает очки в зависимости от пройденного расстояния. Таким образом, в сценарии, который управляет счетом в Update()
, у меня есть:
distance += Vector2.Distance(Player.transform.position, lastPosition);
lastPosition = Player.transform.position;
baseScore = distance;
И это нормально работает.
В этой игре вы получаете награду за то, что не преодолеваете препятствия на протяжении определенного пройденного расстояния, поэтому в скрипте контроллера игрока я написал:
public void Update()
{
distanceTraveled += Vector2.Distance(transform.position, lastPosition);
lastPosition = transform.position;
if (distanceTraveled >= 10)
{
NoHitCombo = NoHitCombo + 2;
distanceTraveled = 0;
}
[...]
}
и
public void OnTriggerEnter2D(Collider2D other)
if (other.gameObject.tag == "Obstacle")
{
NoHitCombo = 0;
distanceTraveled = 0;
}
Так что, если я ничего не получаю, мой прирост очков при NoHitCombo> 0 должен быть * 2, * 4, * 6 и т. Д.
например:
В начале, и я набираю дистанцию как счет.
Хотя NoHitCombo равен 2, я хочу вычислить новое значение, равное "Distance since NoHitCombo value has changed * NoHitCombo"
. Если его 4, я хочу другое значение для вычисления расстояния * 4 и так далее.
Я пытался написать что-то подобное в Update()
:
Finalscore = baseScore * NoHitCombo;
но это не работает, так как мой счет меняется вместе со значением NoHitCombo.
я пробовал что-то с if (nohitcombo > 0)
, но ничего не работало, как предполагалось.
Мне кажется, я что-то упустил, чтобы завершить головоломку, все, что я пробовал, неправильно.
Я не могу понять, чтобы решить это. Мне, вероятно, нужно сохранить значение пройденного расстояния, пока активен множитель, и как только он изменится, он должен добавить это значение к баллу
Любая помощь приветствуется
ps английский не мой родной язык, извините за это!