123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using UnityEngine;
- // ReSharper disable once CheckNamespace
- namespace QFX.SFX
- {
- public class SFX_GroundAttacher : SFX_ControlledObject
- {
- public LayerMask LayerMask;
- public float MaxDistance = 100;
- public bool OverrideRotation;
- public Vector3 Offset;
- private bool _isAttached;
- private Transform _transform;
- private void Awake()
- {
- _transform = transform;
- }
- private void Update()
- {
- if (!IsRunning || _isAttached)
- return;
- _isAttached = true;
- RaycastHit raycastHit;
- var hitPos = _transform.position.y;
- if (Physics.Raycast(_transform.position, Vector3.down, out raycastHit, MaxDistance, LayerMask))
- hitPos = Mathf.Min(hitPos, raycastHit.point.y);
- if (!(Mathf.Abs(_transform.position.y - hitPos) > 0.01f))
- return;
- transform.position = new Vector3(_transform.position.x, hitPos + Offset.y, _transform.position.z);
- if (OverrideRotation)
- transform.rotation = Quaternion.LookRotation(Vector3.forward);
- Stop();
- }
- }
- }
|