Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 19

Проблема с прыжком

27.10.2018, 08:33. Показов 1810. Ответов 11
Метки 3d (Все метки)

Студворк — интернет-сервис помощи студентам
После того как я исправил движение, стал косо работать прыжок - я стал улетать черт знает куда, хотя jumpforce стоит 5.
Вот скрипт:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
#region require components
[RequireComponent(typeof(Rigidbody))]
#endregion
public class OnGroundController : MonoBehaviour {
 
    #region move variables
    bool walk;
    public float wSpeed = 200.0f;
    
    bool run;
    public float rSpeed = 300.0f;
    
    bool crouch;
    public float cSpeed = 100f;
    #endregion
 
    #region jump variables
    bool jump;
    public bool grounded = true;
    
    public float jumpForce = 5.0f;
    public float hitDistance = 0.1f;
    
    public LayerMask layer = 0>>8;
    #endregion
    
    #region components
    Rigidbody rb;
    OnGroundController grController;
    OnLadderController lController;
    #endregion
    
    void Start () {
        
        rb = GetComponent<Rigidbody>();
        grController = GetComponent<OnGroundController>();
        lController = GetComponent<OnLadderController>();
        
    }
    
    void Update () {
        
        walk = !Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.LeftControl);
        run = !crouch && Input.GetKey(KeyCode.LeftShift);
        crouch = !run && Input.GetKey(KeyCode.LeftControl);
        
        jump = grounded && Input.GetKeyDown(KeyCode.Space);
        grounded = Physics.Raycast(transform.position - new Vector3(0, 0.95f, 0) , -transform.up, hitDistance, layer);
        
        if (walk) {
            
            Vector3 move = new Vector3(Input.GetAxis("Horizontal"), rb.velocity.y, Input.GetAxis("Vertical")) * wSpeed * Time.deltaTime;
            rb.velocity = move;
            
        }
        if (run) {
            
            Vector3 move = new Vector3(Input.GetAxis("Horizontal"), rb.velocity.y, Input.GetAxis("Vertical")) * rSpeed * Time.deltaTime;
            rb.velocity = move;
            
        }
        if (crouch) {
            
            Vector3 move = new Vector3(Input.GetAxis("Horizontal"), rb.velocity.y, Input.GetAxis("Vertical")) * cSpeed * Time.deltaTime;
            rb.velocity = move;
            
        }
        if (jump) {
            
            rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            
        }
        
    }
    
    void OnTriggerStay(Collider coll) {
    
        lController.ld = coll.gameObject.GetComponent<Ladder>();
    
        if (coll.gameObject.tag == "Ladder") {
            
            transform.position = coll.gameObject.GetComponent<Ladder>().offsetPos;
            
            lController.enabled = true;
            
            rb.useGravity = false;
            
            grController.enabled = false;
            
        }
    
    }
    
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2018, 08:33
Ответы с готовыми решениями:

Проблема с прыжком
Здравствуйте, я начинающий программист на c#. Есть код: using System.Collections; using System.Collections.Generic; using...

Проблема с прыжком
Доброго времени суток Товарищи! Некоторое время назад я решился попробовать себя в Unity У меня возникла одна проблема. Дело в том, что...

проблема при работе с китайским J-LINK 8 или же проблема с с
Всем привет. Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский J-Link 8 c прошивкой 3.20. Недолго...

11
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
27.10.2018, 08:55
Проверь, не срабатывает ли этот код несколько раз подряд во время прыжка:
C#
1
2
3
4
5
if (jump) {
            
            rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            
        }
И да, я бы вот ото вот:
C#
1
grounded = Physics.Raycast(transform.position - new Vector3(0, 0.95f, 0) , -transform.up, hitDistance, layer);
Лучше бы заменил на вход/выход из коллизии с землей.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 19
27.10.2018, 09:48  [ТС]
Так может получиться, что когда я нахожусь в углу, я полечу. И код не может срабатывать несколько раз потому что у меня там стоит GetKeyDown.
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
27.10.2018, 10:30
Ну тогда просто уменьши силу)

Добавлено через 11 минут
Можешь еще попробовать форсмод поменять на Force.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 19
27.10.2018, 19:13  [ТС]
Теперь вообще не прыгает)))

Добавлено через 1 час 12 минут
Так что делать-то?
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
27.10.2018, 19:31
Подбери нужные значения, просто ведь, если много убавляй, если мало добавляй.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 19
27.10.2018, 20:08  [ТС]
Оно на 10 не прыгает, а на 25 уже улетает к чертовой бабушке
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
27.10.2018, 20:41
Ошибка в другом, не знаю в чем конкретно, но явно не в добавлении силы.
Вот этот код никак не может влиять? Здесь ты гравити отключаешь. Если это не влияет, то я без понятия, можешь залить сюда демо проект с этой проблемой.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void OnTriggerStay(Collider coll) {
    
        lController.ld = coll.gameObject.GetComponent<Ladder>();
    
        if (coll.gameObject.tag == "Ladder") {
            
            transform.position = coll.gameObject.GetComponent<Ladder>().offsetPos;
            
            lController.enabled = true;
            
            rb.useGravity = false;
            
            grController.enabled = false;
            
        }
    
    }
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 19
27.10.2018, 21:38  [ТС]
Нет, это касается передвижения по лестнице.
Проект скинул.
Вложения
Тип файла: rar Сity of Сontention.rar (5.84 Мб, 2 просмотров)
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
27.10.2018, 23:02
Лучший ответ Сообщение было отмечено Borundel как решение

Решение

Костыль, но всё же. Кстати на Time.deltaTime умножать не обязательно, velocity не зависит от частоты кадров.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void Update()
    {
        run = Input.GetKey(KeyCode.LeftShift);
        crouch = Input.GetKey(KeyCode.LeftControl);
        walk = !run && !crouch;
 
        grounded = Physics.Raycast(transform.position - new Vector3(0, 0.95f, 0), -transform.up, hitDistance, layer);
        jump = grounded && Input.GetKeyDown(KeyCode.Space);
 
        float h_input = Input.GetAxis("Horizontal");
        float v_input = Input.GetAxis("Vertical");
 
        Vector3 move = Vector3.zero;
 
        if (walk)
            move = new Vector3(h_input, 0.0f, v_input) * wSpeed * Time.deltaTime + rb.velocity.y * Vector3.up;
 
        if (run)
            move = new Vector3(h_input, 0.0f, v_input) * rSpeed * Time.deltaTime + rb.velocity.y * Vector3.up;
 
        if (crouch)
            move = new Vector3(h_input, 0.0f, v_input) * cSpeed * Time.deltaTime + rb.velocity.y * Vector3.up;
 
        if (jump)
            move += Vector3.up * jumpForce;
 
        rb.velocity = move;
    }
1
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 19
28.10.2018, 07:32  [ТС]
Огромное спасибо! Но я не понимаю, зачем прибавлять велосити по игрику и умножать на вектор3 ап?
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
28.10.2018, 08:47
Сказал же, костыль. Лучше пересмотреть логику управления физикой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2018, 08:47
Помогаю со студенческими работами здесь

Выдает ошибку, а я не могу понять в чем проблема. В чем проблема, скажите пожалуйста!
dx=0.0005; epsillon=0.00002; i=0; for x= 0:0.0005:3 i=i+1; if x&lt;1 y (i)=-1; elseif x&lt;2 S=0; ...

Холодильник LG .мод GR-M392YQ.Проблема с дверю, Проблема с дверю при закрывании
Доброго времени суток уважаемые! Холодильник LG GR-M392YQ с первых дней клиент жалуется на то что при закрывание верхней камеры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru