В настоящее время это мой код. Объект движется с желаемой скоростью, но при использовании rb.velocity = движения * скорость, если он прыгнет, он останется приклеенным к земле. Я не понимаю, как можно что-то исправить.
private Vector3 movement;
private float speed = 3;
public bool isGrounded;
void Start()
{
rb = GetComponent();
}
void Update()
{
float Horizontal = Input.GetAxis("Horizontal");
float Vertical = Input.GetAxis("Vertical");
movement = transform.right * Horizontal + transform.forward * Vertical;
float origMagnitude = movement.magnitude;
movement.y = 0.0f;
movement = movement.normalized * origMagnitude;
if(isGrounded && Input.GetKeyDown(KeyCode.Space))
rb.AddForce((Vector3.up + movement) * JumpForce, ForceMode.Impulse);
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.down), out hit, rayDistance, layer))
isGrounded = true;
else
isGrounded = false;
}
private void FixedUpdate()
{
rb.velocity = movement * speed;
}
Подробнее здесь: https://stackoverflow.com/questions/618 ... tant-speed
Правильно перемещайте твердое тело с постоянной скоростью. ⇐ C#
Место общения программистов C#
-
Anonymous
1763320020
Anonymous
В настоящее время это мой код. Объект движется с желаемой скоростью, но при использовании rb.velocity = движения * скорость, если он прыгнет, он останется приклеенным к земле. Я не понимаю, как можно что-то исправить.
private Vector3 movement;
private float speed = 3;
public bool isGrounded;
void Start()
{
rb = GetComponent();
}
void Update()
{
float Horizontal = Input.GetAxis("Horizontal");
float Vertical = Input.GetAxis("Vertical");
movement = transform.right * Horizontal + transform.forward * Vertical;
float origMagnitude = movement.magnitude;
movement.y = 0.0f;
movement = movement.normalized * origMagnitude;
if(isGrounded && Input.GetKeyDown(KeyCode.Space))
rb.AddForce((Vector3.up + movement) * JumpForce, ForceMode.Impulse);
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.down), out hit, rayDistance, layer))
isGrounded = true;
else
isGrounded = false;
}
private void FixedUpdate()
{
rb.velocity = movement * speed;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/61896235/correctly-move-rigidbody-at-constant-speed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия