Я новичок в юнити и решил начать с простого 2Д платформера. После реализации системы прыжков я столкнулся с одной проблемой, если персонаж врежется в стену платформы (боковую её часть) и при этом нажмёт кнопку прыжка, то он улетит в космос. Вот мой код:
using UnityEngine;
public class Movment : MonoBehaviour {
public float speed, JumpPower;
public bool OnGround = true;
void Update() {
if (Input.GetKey(KeyCode.RightArrow))
transform.Translate(new Vector2(speed * Time.deltaTime, 0));
if (Input.GetKey(KeyCode.LeftArrow))
transform.Translate(new Vector2(-speed * Time.deltaTime, 0));
if (Input.GetKey(KeyCode.UpArrow) && OnGround) {
OnGround = false;
GetComponent<Rigidbody2D>().AddForce(Vector2.up * JumpPower);
}
}
private void OnCollisionEnter2D(Collision2D collision) {
if ((collision.gameObject.tag == "Platform")) {
Debug.Log("WellDone");
OnGround = true;
}
}
}
Изначально, я попытался решить данную проблему сделав платформу из 3 коллайдеров. Одного главного, самой платформы и 2-ух дополнительных, боковые части. Боковые коллайдеры должны были огородить основной коллайдер. Но к сожалению, это не помогло. Отладка показала, что игрок в любом случае касается помимо боковой платформы, ещё и основной.