Хорошо, я начинаю становиться лучше. Я пытаюсь подняться
мой код распознает, когда я нахожусь у стены, и может заставить его карабкаться, но я делаю это, отключая шкалу гравитации или, вернее, устанавливая ее на 0, когда на стене верно
и затем, когда он выключен, возвращает его к исходному значению ....
это не похоже на правду ...
Я имею в виду, что оно увеличивается, а затем, когда расстояние превышает условное значение, гравитационная шкала возвращается к первоначальной настройке, но если я отпускаю мобильный джойстик, пока гравитационная шкала не будет сброшена снова, он будет продолжать расти и даже продолжать действовать как дополнительная сила. чем перевести ... я все еще новичок в единстве, так что я не уверен, что я ищу
что мне нужно для того, чтобы мобильный джойстик находился полностью вверх, используя его вертикальное значение, а затем двигался вверх по стене, если он был на 0, затем пауза на стене и оставался в этой точке, и если он спускался вниз, чтобы спуститься вниз
вот мои 3 функции
private void OnCollisionEnter2D(Collision2D col) {
if (col.gameObject.tag == "climbable") {
is_on_wall = true;
currentWall = col.gameObject.transform;
currentWallCollider = col.collider;
}
}
private bool found_wall() {
if (currentWall) {
if (Physics2D.Distance (currentWallCollider, heroCollider).distance < 10) {
rb.gravityScale = 0;
return true;
} else {
rb.gravityScale = 25;
}
}
return false;
}
private void climb() {
if (vertical > 0.5f) {
transform.Translate (0, 1f, 0);
} else if (vertical < -0.5f) {
transform.Translate (0, -1f, 0);
} else {
transform.Translate (0, 0, 0);
}
}
private void FixedUpdate() {
if (can_jump()) {
rb.AddForce (new Vector2 (0, jumpHeight));
}
if (found_wall ()) {
climb ();
}
}
и они вызываются в исправленном обновлении
помогите пожалуйста, не запутайте меня