У меня есть проблема когда я подношу предмет себе под ноги то персонаж и коробка начинает двигаться туда-сюда.
И я хочу это исправить, у меня была идея ограничить передвижение объекта по Y, но я не знаю как это сделать.
И еще я не знаю как сделать подбирание и отпускание предмета по нажатию кнопки.
Скрипт стоит на коробке
Код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TakeControll : MonoBehaviour
{
[Header("For take and throw")]
private bool isTaken = false;
private bool canHold = true;
public float throwForce = 200f;
public float distance;
private Vector3 objPos;
public GameObject DotForTake;
public Transform DotForTake1;
public Vector3 DotForTake2;
[Header("For normaly take obj.y")]
private Vector3 testForNormalTake;
void Start()
{
DotForTake2 = DotForTake1.transform.position;
testForNormalTake.y = DotForTake2.y;
}
void FixedUpdate()
{
distance = Vector3.Distance(this.transform.position, DotForTake.transform.position);
if (distance >= 1f)
{
isTaken = false;
}
if (isTaken == true)
{
this.transform.Rotate(new Vector3(0, 0, 0));
this.GetComponent<Rigidbody>().velocity = Vector3.zero;
this.GetComponent<Rigidbody>().angularVelocity = Vector3.zero;
this.transform.position = DotForTake1.position;
if (Input.GetMouseButtonDown(0))
{
//throw
this.GetComponent<Rigidbody>().AddForce(DotForTake.transform.forward * throwForce);
isTaken = false;
}
}
else
{
objPos = this.transform.position;
this.transform.SetParent(null);
this.GetComponent<Rigidbody>().useGravity = true;
this.transform.position = objPos;
}
}
void OnMouseOver()
{
if (Input.GetKeyDown(KeyCode.E))
{
if (distance <= 1f)
{
isTaken = true;
this.GetComponent<Rigidbody>().useGravity = false;
this.GetComponent<Rigidbody>().detectCollisions = true;
}
}
if (Input.GetKeyUp(KeyCode.E))
{
isTaken = false;
}
}
}
DotForTake, DotForTake1, DotForTake2 это точка, где весит объект когда isTaken = true
Помогите пожалуйста