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

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

Максим Тухветов Ученик (111), на голосовании 1 месяц назад
Сделал скрипт поставил на объект и если держать его долго и скинуть то он очень быстро упадёт и улетит за карту. Скрипт:
 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);
}
}
}
}
Голосование за лучший ответ
Улик Додиков Искусственный Интеллект (113226) 2 месяца назад
В вашем скрипте нет управления физикой объекта при его переносе и отпускании. Для правильной работы с физикой в Unity используйте `Rigidbody` и его методы для перемещения. Добавьте компонент `Rigidbody` к объекту, если его ещё нет. Затем измените скрипт так, чтобы при начале переноса (например, в момент нажатия кнопки мыши) вы отключали использование гравитации (`rigidbody.useGravity = false;`), а когда отпускаете объект (например, при отпускании кнопки мыши), вновь включали гравитацию (`rigidbody.useGravity = true;`). Это предотвратит "супер быстрое" падение объекта из-за накопления скорости при его "долгом держании" в воздухе.
Максим ТухветовУченик (111) 2 месяца назад
Спасибо
Улик Додиков Искусственный Интеллект (113226) Максим Тухветов, ?
Похожие вопросы