В Unity есть несколько способов реализовать указанные вами функции. Давайте разберём их по отдельности.
### 1. Сделать объект дочерним и переместить в нулевую позицию
Для того чтобы сделать объект дочерним другому объекту и переместить его в локальную нулевую позицию при нажатии кнопки, вы можете использовать следующий код на C#.
Создайте новый скрипт, например `MakeChildOnKeyPress`, и добавьте его к объекту, который будет управлять этой функциональностью.
```csharp
using UnityEngine;
public class MakeChildOnKeyPress : MonoBehaviour
{
public GameObject objectToMakeChild; // объект, который будет дочерним
public Transform parentObject; // объект, к которому будет привязан дочерний объект
void Update()
{
// Проверяем нажатие клавиши (например, пробела)
if (Input.GetKeyDown(KeyCode.Space))
{
if (objectToMakeChild != null && parentObject != null)
{
// Делаем объект дочерним
objectToMakeChild.transform.SetParent(parentObject);
// Перемещаем его в локальную нулевую позицию
objectToMakeChild.transform.localPosition = Vector3.zero;
}
}
}
}
```
### 2. Перемещать объект по рэй касту при нажатии левой кнопки мыши
Для того чтобы перемещать объект в позицию, на которую указывает рэй каст, вам нужно использовать метод `Physics.Raycast`. Вот пример того, как это можно реализовать:
Создайте еще один скрипт, например, `MoveObjectOnClick`:
```csharp
using UnityEngine;
public class MoveObjectOnClick : MonoBehaviour
{
public GameObject objectToMove; // объект, который будет перемещаться
void Update()
{
// Проверяем, нажата ли левая кнопка мыши
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// Проверяем, попал ли рэйкаст во что-то
if (Physics.Raycast(ray, out hit))
{
// Перемещаем объект в позицию удара
objectToMove.transform.position = hit.point;
}
}
}
}
```
### Как использовать скрипты
1. Создайте пустой объект в сцене и прикрепите к нему `MakeChildOnKeyPress`. Установите в инспекторе `objectToMakeChild` и `parentObject`.
2. Создайте объект (например, куб) и прикрепите к нему `MoveObjectOnClick`. Установите в инспекторе `objectToMove`.
Теперь при нажатии пробела дочерний объект будет привязываться к указанному родительскому объекту и перемещаться в нулевую позицию. А при нажатии на левую кнопку мыши объект будет перемещаться в ту точку, куда вы кликнули.