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

Движение рук при движение камеры игрока unity

Senya Triganov Ученик (158), на голосовании 4 месяца назад
как сделать движение рук при движение камеры игрока unity
Голосование за лучший ответ
HAKER HAKER Знаток (370) 5 месяцев назад
using UnityEngine;

public class HandMovement : MonoBehaviour
{
// Ссылка на камеру
public Camera mainCamera;

// Ссылки на руки
public Transform leftHand;
public Transform rightHand;

// Скорость движения рук
public float handSpeed = 5f;

// Смещение рук относительно камеры
public Vector3 handOffset = new Vector3(0.2f, -0.1f, 0);

void Update()
{
// Получаем текущую позицию камеры
Vector3 cameraPosition = mainCamera.transform.position;

// Вычисляем позицию левой руки
Vector3 leftHandPosition = cameraPosition + handOffset;
leftHandPosition.y += Mathf.Sin(Time.time * handSpeed) * 0.1f; // Добавляем небольшое колебание
leftHand.position = leftHandPosition;

// Вычисляем позицию правой руки
Vector3 rightHandPosition = cameraPosition + handOffset;
rightHandPosition.y += Mathf.Sin(Time.time * handSpeed) * 0.1f; // Добавляем небольшое колебание
rightHandPosition.x *= -1; // Зеркальное отображение правой руки
rightHand.position = rightHandPosition;
}
}
Объяснение:

Объявление переменных:
mainCamera: Ссылка на основную камеру в сцене.
leftHand, rightHand: Ссылки на трансформации левой и правой рук.
handSpeed: Скорость движения рук, регулирует амплитуду колебания.
handOffset: Смещение рук относительно положения камеры.
Обновление позиций рук в Update():
Получаем текущую позицию камеры с помощью mainCamera.transform.position.
Вычисляем позицию левой руки, добавляя handOffset к позиции камеры.
Добавляем небольшое колебание к оси y левой руки, используя Mathf.Sin(Time.time * handSpeed).
Вычисляем позицию правой руки, зеркально отражая левую по оси x.
Применяем полученные позиции к трансформации рук.
Установка:

Создайте новый пустой объект (GameObject) в сцене Unity.
Добавьте компонент HandMovement к этому объекту.
В инспекторе компонента HandMovement:
Задайте ссылку на mainCamera.
Задайте ссылки на leftHand и rightHand (создайте два пустых объекта для рук в сцене и назначьте их ссылки).
Отрегулируйте handSpeed и handOffset для желаемого движения.
Дополнительные возможности:

Анимация рук: Вы можете добавить более сложную анимацию рук с помощью анимаций Unity (Animations).
Создание костей: Создайте кости для рук, чтобы получить более естественное движение.
Добавление вращения: Вы можете добавить вращение рук, чтобы сделать их движение более реалистичным.
Важно:

Убедитесь, что объект с компонентом HandMovement находится в той же иерархии, что и камера.
Отрегулируйте handSpeed и handOffset для достижения желаемого эффекта.
Похожие вопросы