Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Если переносить объект и держать долгое время и скидывать то он падает очень быстро. C# Что делать?

Максим Тухветов Ученик (111), на голосовании 5 месяцев назад
Сделал скрипт поставил на объект и если держать его долго и скинуть то он очень быстро упадёт и улетит за карту. Скрипт:
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class Drag : MonoBehaviour
{
public bool drag;

void Update()
{
if (drag == true)
{
if (Input.GetMouseButtonDown(0))
{
Vector3 newPosition = new Vector3(Input.mousePosition.x, 10.0f);
transform.position = Camera.main.ScreenToWorldPoint(newPosition);
transform.position = transform.position + new Vector3(0.0f, 8f, 10.0f);
}
if (Input.GetMouseButton(0))
{
Vector3 newPosition = new Vector3(Input.mousePosition.x, 10.0f);
transform.position = Camera.main.ScreenToWorldPoint(newPosition);
transform.position = transform.position + new Vector3(0.0f, 8f, 10.0f);
}
}
}
}
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (157212) 6 месяцев назад
В вашем скрипте нет управления физикой объекта при его переносе и отпускании. Для правильной работы с физикой в Unity используйте `Rigidbody` и его методы для перемещения. Добавьте компонент `Rigidbody` к объекту, если его ещё нет. Затем измените скрипт так, чтобы при начале переноса (например, в момент нажатия кнопки мыши) вы отключали использование гравитации (`rigidbody.useGravity = false;`), а когда отпускаете объект (например, при отпускании кнопки мыши), вновь включали гравитацию (`rigidbody.useGravity = true;`). Это предотвратит "супер быстрое" падение объекта из-за накопления скорости при его "долгом держании" в воздухе.
Максим ТухветовУченик (111) 6 месяцев назад
Спасибо
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (157212) Максим Тухветов, ?
Похожие вопросы