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

Rigidbody и движение корабля

31.03.2020, 13:59. Показов 1833. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
// хочу что бы по нажатию клавиши корабль например резко ускорялся или резко останавливался. Но он это категорически делать не хочет. Вот мой код.

И есть ещё одна проблема код не работает в FixedUpdate(). (закомментирован)

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
using UnityEngine;
 
 
public class PlayerControls : MonoBehaviour {
 
    public float thrustSpeed; // скорость поворота
    public float turnSpeed;  // скорость движения
    public float stop = 1f;
 
 
    public float hoverPower; // сила зависать
    public float hoverHeight; // высота зависания
 
 
    //private float thrustInput;
    //private float turnInput;
 
    private Rigidbody myRigidbody;
   
 
 
    void Start()
    {
        myRigidbody = GetComponent<Rigidbody>();
               
    }
 
 
    void Update()
    {
 
        // ввод с клавиатуры
        float thrustInput = Input.GetAxis("Vertical");
        float turnInput = Input.GetAxis("Horizontal");
 
 
        // Поворот корабля 
        myRigidbody.AddRelativeTorque(0f, turnInput * turnSpeed, 0f);
 
 
 
        // Перемещение корабля 
        myRigidbody.AddRelativeForce(0f, 0f, thrustInput * thrustSpeed);
 
 
 
 
 
        // Hovering  Зависание
        Ray ray = new Ray(transform.position, -transform.up);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, hoverHeight))
        {
            float proportionalHeight = (hoverHeight - hit.distance) / hoverHeight;
 
            //Debug.Log(proportionalHeight);
 
            Vector3 appliedHoverForce = Vector3.up * proportionalHeight * hoverPower;
            myRigidbody.AddForce(appliedHoverForce, ForceMode.Acceleration);
        }
 
 
        // скрипт огня
        if (Input.GetButtonDown("Fire1"))
        {
            myRigidbody.AddRelativeForce(0f, 0f, thrustInput * stop);
            Debug.Log("Fire1 ON " + stop);
        }
 
        else if (Input.GetButtonUp("Fire1"))
        {
            myRigidbody.AddRelativeForce(0f, 0f, thrustInput * thrustSpeed);
            Debug.Log("Fire1 OFF" + stop);
        }
 
 
    }
 
 
    //void FixedUpdate()
    //{
    //    // Поворот корабля 
    //    shipRigidBody.AddRelativeTorque(0f, turnInput * turnSpeed, 0f);
    //    //Debug.Log("Поворот корабля");
 
    //    // Перемещение корабля 
    //    shipRigidBody.AddRelativeForce(0f, 0f, thrustInput * thrustSpeed);
 
    //    // Hovering  Зависание
    //    Ray ray = new Ray(transform.position, -transform.up);
    //    RaycastHit hit;
 
    //    if (Physics.Raycast(ray, out hit, hoverHeight))
    //    {
    //        float proportionalHeight = (hoverHeight - hit.distance) / hoverHeight;
    //        Vector3 appliedHoverForce = Vector3.up * proportionalHeight * hoverPower;
    //        shipRigidBody.AddForce(appliedHoverForce, ForceMode.Acceleration);
    //    }
    //}
 
}
 
 
/*
 * FixedUpdate: FixedUpdate() не зависит от Update(), и может вызываться как чаще него так и реже (обычно вызывается реже, если FPS достаточно высок). 
 * Это событие может быть вызвано несколько раз в кадре, если FPS низкий а может быть и вообще не вызвано между кадрами, если FPS высокий. 
 * Все физические расчеты движка и обновление происходит сразу после FixedUpdate(). 
 * При применении расчетов движения внутри FixedUpdate(), вам не нужно умножать ваше значение на Time.deltaTime. 
 * Это потому, что FixedUpdate() вызывается из таймера, независимого от частоты кадров.
*/
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2020, 13:59
Ответы с готовыми решениями:

Движение игрока - Rigidbody
Здравствуйте! Есть простой скрипт с 2 вариантами движения игрока: using System.Collections; using System.Collections.Generic; ...

Kinematic Rigidbody vs no rigidbody
Есть ли какая то разница с точки зрения обработки столкновений, если у объекта есть rigidbody с isKinematic true, или если у объекта нет...

Движение корабля
По заданию, корабль должен плавно &quot;плыть&quot; - плывет, но оставляет за собой след. В чем ошибка или недочет? uses graphabc; var...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2020, 13:59
Помогаю со студенческими работами здесь

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

В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля; 4 корабля?
помогите решить пожалуйста В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля;...

Как в игре ограничить движение космического корабля областью игровой зоны
Здравствуйте,у меня такой вопрос.Я написал маленькую игру, типо космического корабля который сносит летящие ему на встречу вражеские...

Поворот паруса корабля на 180 градусов при приходе за рамки экрана и изменении движения корабля
Здравствуйте. Тема: есть корабль с парусом. При выходе за рамки экрана корабль начинает двигаться в обратную сторону. Нужно сделать так....

Rigidbody
Есть модель автомобиля. На модельке Rigidbody и mesh colider. Пытаюсь написать скрипт езды(С#). Не могу понять как заставить машину...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru