Как создать редактируемый куб в юнити? Не могу решить? Есть задача. При клике пользователя в пространстве он может растягивать плоскость по x и z, если он тянет за какую-либо грань, плоскость растягивается по y в результате чего создается куб. Есть идеи на счет того что нужно будет использовать Raycast, но не знаю как реализовать.

15 Фев 2020 в 19:51
153 +1
0
Ответы
1

Да, для создания редактируемого куба в Unity вам придется использовать Raycast, чтобы определить, где пользователь кликнул и какую грань куба он тянет.

Ниже приведен пример кода, который поможет вам начать реализацию этой задачи:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EditableCube : MonoBehaviour
{
public GameObject planePrefab; // префаб плоскости
public GameObject cubePrefab; // префаб куба
public GameObject plane; // текущая плоскость
public GameObject cube; // текущий куб
public bool isDragging = false; // флаг для определения, тянет ли пользователь грань
void Update()
{
if (Input.GetMouseButtonDown(0))
{
isDragging = true;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
plane = Instantiate(planePrefab, hit.point, Quaternion.identity);
}
}
if (isDragging && Input.GetMouseButton(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Vector3 scale = hit.point - plane.transform.position;
cube = Instantiate(cubePrefab, plane.transform.position + scale / 2, Quaternion.identity);
cube.transform.localScale = new Vector3(Mathf.Abs(scale.x), Mathf.Abs(scale.y), Mathf.Abs(scale.z));
}
}
if (Input.GetMouseButtonUp(0))
{
isDragging = false;
Destroy(plane);
}
}
}

Этот код создает плоскость при клике пользователем и растягивает ее на плоскость, на которую пользователь кликнул и тянет. Затем он создает куб и растягивает его в соответствии с размерами плоскости.

Не забудьте присвоить префабы плоскости и куба в инспекторе Unity перед запуском кода. Надеюсь, данный пример поможет вам реализовать задачу.

18 Апр в 17:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 887 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир