Код: Выделить всё
public class spring : MonoBehaviour
{
[SerializeField] public float jumpHeight = 10f;
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
collision.gameObject.GetComponent().AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);
}
}
}
Я попытался адаптировать свой сценарий восходящей пружины. чтобы вы шли в направлении, указанном в скрипте (например, Vector2.right, чтобы идти направо), но я предполагаю, что это просто не так и не может работать таким образом. Все сообщения, которые я видел в Интернете, когда пытался решить свою проблему, похоже, были либо о чем-то еще в Unity, случайно названном пружиной, либо о том, как нажать объект, когда игрок
редактирует:
фактические результаты для Vector2.right не меняют направление, а просто отбрасывают игрока. Кроме того, я переименовал переменную jumpHeight в rightForce, но я уверен, что это не имеет никакого отношения к тому, что она не работает. Unity не показала ошибок.
Код: Выделить всё
bool IsGrounded()
{
return GetComponent().velocity.y == 0;
}
[SerializeField] private float speed = 0;
[SerializeField] private float jumpHeight = 0;
[SerializeField] private float FastFallSpeed = 0;
[SerializeField] private Rigidbody2D rb;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
rb.velocity = new Vector2(Input.GetAxis("Horizontal") * speed, rb.velocity.y);
if (IsGrounded())
{
if (Input.GetKey(KeyCode.W))
{
rb.velocity = new Vector2(rb.velocity.x, jumpHeight);
}
}
}
void FixedUpdate()
{
if (!IsGrounded())
{
if (Input.GetKey(KeyCode.S))
{
rb.velocity = new Vector2(rb.velocity.x, FastFallSpeed);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... rizontally
Мобильная версия