У меня есть персонаж в Unity, что я использую raycast, чтобы он прыгал. Но даже когда raycast не ударился о землю (я вижу луч с выходом отладки), игрок все еще может прыгать. Любые идеи, почему луч всегда думает, что он сталкивается? Может ли луч ударить по моему коллайдеру персонажа, что может быть правдой? Я искал онлайн в течение нескольких часов, и ничего не нашел, это исправление ситуации. Вот мой код:Unity Raycast всегда возвращает true
void FixedUpdate()
{
Ray ray = new Ray();
RaycastHit hit;
ray.origin = transform.position;
ray.direction = Vector3.down;
bool output = Physics.Raycast(ray, out hit);
Debug.DrawRay(ray.origin, ray.direction, Color.red);
if (Input.GetKey(KeyCode.Space) && output)
{
r.AddForce(Vector3.up * 1f, ForceMode.VelocityChange);
}
}
Вы пытались переместить 'ray.origin', чтобы быть вне вашего коллайдера персонажа? – Kolichikov
Да, поэтому, когда я ставлю луч ниже (ниже персонажа и земли), нет прыжка, что имеет смысл. Но я просто положил его ниже персонажа (все еще над землей, как можно ближе к уровню с ногами персонажей), он никогда не обнаруживает землю и постоянно позволяет прыгать – SJR59
также, когда я помещаю луч над моим персонажем, как далеко выше , он все еще позволяет прыгать ... – SJR59