mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-12 22:44:35 +01:00
68 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|