Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/MonoEffectPluginBullet.cs
2025-08-13 09:26:42 +08:00

68 lines
1.5 KiB
C#

using UnityEngine;
namespace MoleMole
{
public class MonoEffectPluginBullet : BaseMonoEffectPlugin
{
[Header("Max Distance")]
public float maxDistance;
[Header("Effect Velocity")]
public float velocity;
[Header("Collision Layer Mask")]
public LayerMask mask = (1 << InLevelData.MONSTER_HITBOX_LAYER) | (1 << InLevelData.STAGE_COLLIDER_LAYER);
[Header("Empty path means start at the most outer transform")]
public string startTargetPath;
[Header("Follow rotation")]
public bool followRotation;
private float _travelDistance;
private RaycastHit _castHit;
protected override void Awake()
{
base.Awake();
}
public void SetupStartParentTarget(Transform parent)
{
Transform transform = parent.Find(startTargetPath);
base.transform.position = transform.position + base.transform.TransformDirection(_effect.OffsetVec3);
if (followRotation)
{
base.transform.rotation = transform.rotation;
}
}
public override void Setup()
{
_travelDistance = maxDistance;
if (Physics.Raycast(base.transform.position, base.transform.forward, out _castHit, maxDistance, mask))
{
_travelDistance = _castHit.distance;
}
}
private void Update()
{
float num = velocity * _effect.TimeScale;
base.transform.Translate(new Vector3(0f, 0f, num), Space.Self);
_travelDistance -= num;
}
public override bool IsToBeRemove()
{
return _travelDistance <= 0f;
}
public override void SetDestroy()
{
_travelDistance = 0f;
}
}
}