41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using UnityEngine;
|
||
|
||
public class SwingHammer : MonoBehaviour
|
||
{
|
||
[Tooltip("Максимальный угол поворота в каждую сторону от центра.")]
|
||
[SerializeField]
|
||
private float maxAngle = 45f;
|
||
|
||
[Tooltip("Скорость качания (например, 1.5 - чем выше, тем быстрее).")]
|
||
[SerializeField]
|
||
private float speed = 1.5f;
|
||
|
||
[Header("Настройка начала качания")]
|
||
[Tooltip("Смещение фазы (в радианах). Позволяет настроить начальный угол качания.")]
|
||
[SerializeField]
|
||
private float phaseOffset = 0f; // <--- НОВОЕ ПОЛЕ!
|
||
|
||
private Quaternion initialRotation;
|
||
|
||
void Start()
|
||
{
|
||
initialRotation = transform.rotation;
|
||
}
|
||
|
||
void Update()
|
||
{
|
||
// 1. Рассчитываем фазу с добавлением смещения.
|
||
float phase = Time.time * speed + phaseOffset;
|
||
|
||
// 2. Рассчитываем угол.
|
||
float angle = Mathf.Sin(phase) * maxAngle;
|
||
|
||
// 3. Применяем вращение
|
||
|
||
// Используйте ту ось, которую вы уже нашли (например, Z):
|
||
Quaternion swingRotation = Quaternion.Euler(0, 0, angle);
|
||
|
||
// Применяем вращение от качания к сохраненному начальному вращению.
|
||
transform.rotation = initialRotation * swingRotation;
|
||
}
|
||
} |