Наземная передача лучей не работает после масштабирования символа в секунду

#c# #unity3d

Вопрос:

Я пытаюсь сделать игру в формате FPS. В движении.cs. Радиопередача начинается с центра Капсулы (трансформация игрока.позиция) и отправляется в направлении Вектора 3.вниз, с пределом высоты игрока / 2 0,1 f, где высота игрока-высота сборщика капсул игрока (Капсулы).

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class checkJump : MonoBehaviour
{
    private Rigidbody rb;
    private float playerHeight = 2f; 
    private bool isOnGround;
    private float jumpSpeed = 400f;

    void Start() {
        rb = GetComponent<Rigidbody>();
    }
    void Update()
    {
        isOnGround = Physics.Raycast(transform.position, Vector3.down, playerHeight / 2   0.1f);
        Jump();
        Debug.Log(isOnGround);
    }

    void Jump() {
        if (Input.GetKeyDown(KeyCode.Space) amp;amp; isOnGround)
        {
            rb.AddForce(Vector3.up * jumpSpeed * Time.deltaTime, ForceMode.Impulse);
        
        }
    }
}
 

Я отключил все остальные сценарии, кроме «checkJump.cs». И когда я устанавливаю значение шкалы (4,4,3) или что-то еще, оно показывает мне ложь в консоли, и плеер не прыгает, когда я нажимаю Enter. Но когда я устанавливаю значение шкалы на (1,1,1), оно показывает истину. В обоих случаях игрок находится на поверхности земли.

Также попробовал другой игровой объект в капсуле, не работает.

Вот изображения :

https://forum.unity.com/attachments/onescale-png.931606/

https://forum.unity.com/attachments/otherscale-png.931609/

Ответ №1:

Ваша переменная isOnGround устанавливается в значение true только тогда, когда RayCast падает на землю. Поскольку вы настроили его на преобразование.положение, он будет стрелять из центра персонажа. Вы также ограничили расстояние, на которое он стреляет, до высоты игрока / 2 0,1, что равно 1,1.

Так что, в принципе, всякий раз, когда ваш местный масштаб.y больше 1,1, ваш радиопередатчик больше не достигает земли и, следовательно, никогда не будет регистрировать ваше пребывание на земле.

Чтобы решить эту проблему, умножьте расстояние передачи на ваш местный масштаб.и у тоже.

Комментарии:

1. Извините, но там написано, что мне пока не разрешено прикреплять изображения к своему сообщению. Но я поместил весь сценарий в сообщение и добавил результат.

2.Но вы получите изображения здесь : forum.unity.com/attachments/otherscale-png.931609 forum.unity.com/attachments/onescale-png.931606

3. Теперь я понимаю! Смотрите мою правку.

4. Да, это работает. Большое спасибо! Ну, я тоже думал о том же и пробовал это с помощью жестко закодированных чисел раньше. Но, наверное, я напутал с расчетами, так что ничего не вышло. В любом случае, большое спасибо!