33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
public class DualAxisLampSwing : MonoBehaviour
|
|
{
|
|
[Header("G³ówne bujanie")]
|
|
public float mainSwingAngle = 15f;
|
|
public float mainSwingSpeed = 1.5f;
|
|
public Vector3 mainSwingAxis = Vector3.right;
|
|
|
|
[Header("Dodatkowe przechylanie")]
|
|
public float secondaryTiltAngle = 5f;
|
|
public float secondaryTiltSpeed = 0.7f;
|
|
public Vector3 secondaryTiltAxis = Vector3.forward;
|
|
|
|
private Quaternion initialRotation;
|
|
|
|
void Start()
|
|
{
|
|
initialRotation = transform.localRotation;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
float mainSwing = Mathf.Sin(Time.time * mainSwingSpeed) * mainSwingAngle;
|
|
float secondaryTilt = Mathf.Sin(Time.time * secondaryTiltSpeed) * secondaryTiltAngle;
|
|
|
|
Quaternion mainRotation = Quaternion.AngleAxis(mainSwing, transform.TransformDirection(mainSwingAxis.normalized));
|
|
Quaternion secondaryRotation = Quaternion.AngleAxis(secondaryTilt, transform.TransformDirection(secondaryTiltAxis.normalized));
|
|
|
|
transform.localRotation = initialRotation * mainRotation * secondaryRotation;
|
|
}
|
|
}
|