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

Unity трамплин PersonController,

16.09.2024, 15:12. Показов 489. Ответов 4

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста как написать скрипт на батут чтобы он не поднимал резко игрока, но прыжок работает нормально, я всё пробовал и всё время как будто его просто телепортируют на вверх: вот скрипт игрока скачанный из unity store и из асета "EasyStart Third Person Controller" :


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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
     [Tooltip("Speed ​​at which the character moves. It is not affected by gravity or jumping.")]
    public float velocity = 5f;
    [Tooltip("This value is added to the speed value while the character is sprinting.")]
    public float sprintAdittion = 3.5f;
    [Tooltip("The higher the value, the higher the character will jump.")]
    public float jumpForce = 17.5f;
    public float jumpForceTrampoline = 100f;
    [Tooltip("Stay in the air. The higher the value, the longer the character floats before falling.")]
    public float jumpTime = 0.85f;
    public float jumpTimeTrampoline = 0.85f;
    [Space]
    [Tooltip("Force that pulls the player down. Changing this value causes all movement, jumping and falling to be changed as well.")]
    public float gravity = 9.8f;
 
    float jumpElapsedTime = 0;
 
    // Player states
    bool isJumping = false;
    bool isTrampoline = false;
    bool isCrouching = false;
 
    // Inputs
    float inputHorizontal;
    [SerializeField] private float _speed = 30;
 
 
    float inputVertical;
    bool inputJump;
    bool inputCrouch;
    bool inputSprint;
    private float directionY;
    Animator _animator;
    CharacterController cc;
 
 
    void Start()
    {
        cc = GetComponent<CharacterController>();
        _animator = GetComponent<Animator>();
 
        // Message informing the user that they forgot to add an animator
        // Jump handler
    
    }
 
 
    // Update is only being used here to identify keys and trigger animations
    void Update()
    {
 
        // Input checkers
        inputHorizontal = Input.GetAxis("Horizontal");
        inputVertical = Input.GetAxis("Vertical");
        inputJump = Input.GetAxis("Jump") == 1f;
        inputSprint = Input.GetAxis("Fire3") == 1f;
        // Unfortunately GetAxis does not work with GetKeyDown, so inputs must be taken individually
        inputCrouch = Input.GetKeyDown(KeyCode.LeftControl) || Input.GetKeyDown(KeyCode.JoystickButton1);
 
        // Check if you pressed the crouch input key and change the player's state
        if ( inputCrouch )
            isCrouching = !isCrouching;
 
        // Run and Crouch animation
        // If dont have animator component, this block wont run
        if (inputHorizontal != 0 || inputVertical != 0)
        {
            _animator.SetBool("isRun", true);
        }
        else
        {
            _animator.SetBool("isRun", false);
        }
 
        if (inputJump)
        {
            _animator.SetBool("isJump", true);
            
        }
 
        else
        {
            _animator.SetBool("isJump", false);
        }
 
        // Handle can jump or not
        if ( inputJump && cc.isGrounded )
        {
            isJumping = true;
            // Disable crounching when jumping
            //isCrouching = false; 
        }
 
        HeadHittingDetect();
 
    }
 
      
           
          
            
           
            
    // With the inputs and animations defined, FixedUpdate is responsible for applying movements and actions to the player
    private void FixedUpdate()
    {
 
        // Sprinting velocity boost or crounching desacelerate
        float velocityAdittion = 0;
  
        // Direction movement
        float directionX = inputHorizontal * (velocity + velocityAdittion) * Time.deltaTime;
        float directionZ = inputVertical * (velocity + velocityAdittion) * Time.deltaTime;
         directionY = 0;
 
 
 
 
 
 
        // Jump handler
        if (isJumping)
        {
 
            // Apply inertia and smoothness when climbing the jump
            // It is not necessary when descending, as gravity itself will gradually pulls
            directionY = Mathf.SmoothStep(jumpForce, jumpForce * 0.30f, jumpElapsedTime / jumpTime) * Time.deltaTime;
 
            // Jump timer
            jumpElapsedTime += Time.deltaTime;
            if (jumpElapsedTime >= jumpTime)
            {
                isJumping = false;
                jumpElapsedTime = 0;
            }
 
        }
 
        else if(isTrampoline== true)
        {
            Vector3 jump = new Vector3(0,jumpForceTrampoline,0);
            cc.Move(jump * Time.deltaTime);
                    
          
 
        }
 
        directionY = directionY - gravity * Time.deltaTime;
 
        // Add gravity to Y axis
 
 
        // --- Character rotation --- 
 
        Vector3 forward = Camera.main.transform.forward;
        Vector3 right = Camera.main.transform.right;
 
        forward.y = 0;
        right.y = 0;
 
        forward.Normalize();
        right.Normalize();
 
        // Relate the front with the Z direction (depth) and right with X (lateral movement)
        forward = forward * directionZ;
        right = right * directionX;
 
        if (directionX != 0 || directionZ != 0)
        {
            float angle = Mathf.Atan2(forward.x + right.x, forward.z + right.z) * Mathf.Rad2Deg;
            Quaternion rotation = Quaternion.Euler(0, angle, 0);
            transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 0.15f);
        }
 
        // --- End rotation ---
 
        
        Vector3 verticalDirection = Vector3.up * directionY;
        Vector3 horizontalDirection = forward + right;
 
        Vector3 moviment = verticalDirection + horizontalDirection;
        cc.Move( moviment );
 
    }
 
 
 
    //This function makes the character end his jump if he hits his head on something
    void HeadHittingDetect()
    {
        float headHitDistance = 1.1f;
        Vector3 ccCenter = transform.TransformPoint(cc.center);
        float hitCalc = cc.height / 2f * headHitDistance;
 
        // Uncomment this line to see the Ray drawed in your characters head
        // Debug.DrawRay(ccCenter, Vector3.up * headHeight, Color.red);
 
        if (Physics.Raycast(ccCenter, Vector3.up, hitCalc))
        {
            jumpElapsedTime = 0;
            isJumping = false;
        }
    }
 
 
    private void OnTriggerEnter(Collider other)
    {
        if(other.CompareTag("Trampoline"))
        {
            isTrampoline = true;
            // Применяем силу прыжка
           
 
 
        }
 
 
 
    }
 
    private void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Trampoline"))
        {
            isTrampoline = false;
 
 
 
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2024, 15:12
Ответы с готовыми решениями:

Трамплин (вставить 5 nop перед jmp)
Нужно вставить 5 nop'ов в начале какой-нибудь WinAPI функции чтобы обойти проверку на jmp. Как это сделать? void InstallHook(void*...

Нужно сделать анимацию мотоциклиста, а точнее как он едет, потом заежает на трамплин
Нужно сделать анимацию мотоциклиста,а точнее как он едет,потом заежает на трамплин,делает сальто в воздухе,потом приземляется на другой...

Unity ECS ( нет блин CS:S) - Mr. Unity, мы ждём документацию
Всё до боли просто, да и дело не горит, но хочется знать всего одну вещь: как получить архитектуру сущности, имея эту самую сущность и её...

4
1143 / 308 / 159
Регистрация: 30.07.2022
Сообщений: 1,782
Записей в блоге: 4
16.09.2024, 17:25
Цитата Сообщение от VASU4KA Посмотреть сообщение
я всё пробовал
а по конкретнее, что всё?


можно попробовать так
C#
1
2
3
4
5
6
7
8
9
10
        Vector3 jump = new Vector3(0,jumpForceTrampoline,0);
        Vector3 moviment = verticalDirection + horizontalDirection;
if(isTrampoline== true)
        {
           cc.Move( moviment + jump);
        }
        else
        {
           cc.Move( moviment);
        }
0
0 / 0 / 0
Регистрация: 16.09.2024
Сообщений: 20
16.09.2024, 17:43  [ТС]
Я имею ввиду что везде искал как решить проблему. Этот же код добавить плавность к трамплину ?
0
1143 / 308 / 159
Регистрация: 30.07.2022
Сообщений: 1,782
Записей в блоге: 4
16.09.2024, 19:33
Лучший ответ Сообщение было отмечено VASU4KA как решение

Решение

Цитата Сообщение от VASU4KA Посмотреть сообщение
Этот же код добавить плавность к трамплину ?
если плавность нужна, то вам при isJumping = true; и isTrampoline = true;,
надо постепенно увеличивать значение от transform.position.y до transform.position.y + jumpForceTrampoline
например при помощи Vector3.Lerp()

вы же просто указали перемещаться в точку на высоте jumpForceTrampoline за 1 кадр;
0
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,208
16.09.2024, 19:50
посмотри туторы по использованию кривых для анимаций в коде. для регулировки цикличного прыжка (если батут) - самое то. а еще, использование готовых юньковских контроллеров под существенную модификацию их движений - такое себе занятие. на своем опыте знаю. проще скачать простенький с Asst Store либо свой написать, для полного контроля над ним. в код сильно не вникал, но беглый взгляд заставляет задуматься над тем, что я советую. а там - сам смотри.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2024, 19:50
Помогаю со студенческими работами здесь

Где можно почитать основы разработки в Unity/Unity 3D
До этого был небольшой опыт работы с Windows.Forms и WFP с C#. Где можно разобраться и научится делать простейшие вещи в Unity, чтобы...

Есть тут кто пишет на C# для Unity? Под игры созданные в Unity читы делаются?
Привет. Есть тут кто пишет на C# для Unity? Под игры созданные в Unity читы делаются? Такое реально или нет. Не реально

Установка бесплатной Unity Personal с сайта Unity
Делаю так: Выбор Версии Personal здесь: https://store.unity.com/?_ga=2.122298059.153798898.1559504340-368255761.1559504340 В этом...

Проблема в Unity all compiler errors have to be fixed unity
Всем доброго времени суток,столкнулся с такой проблемой в юнити Проект 2d Для кода использую Sharpdevelop Net Framework 4.0 (мне...

Разработка игр с Unity без Unity редактора
Здравствуйте. Хочу обрисовать ситуацию. Я слепой. Полностью слеп. Среди незрячих программистов есть те, кто занимаются разработкой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru