BloodAndGore/Assets/Scripts/Effects/BloodDripper.cs

39 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Saltosion.OneWeapon.Effects {
public class BloodDripper : MonoBehaviour {
public Vector2 DripOffset = new Vector2(0, -0.5f);
public int DripCount = 5;
public float DropInterval = 0.5f;
private Rigidbody2D ParentBody;
private int Drips = 0;
private bool Step = false;
private float LastDropTime;
private void Start() {
ParentBody = transform.parent.GetComponent<Rigidbody2D>();
DropInterval *= Random.value + 0.5f;
LastDropTime = Random.value * DropInterval + Time.time;
}
private void Update() {
if (ParentBody.velocity.magnitude > 0.1 && Time.time - LastDropTime > DropInterval) {
Step = !Step;
bool WalkingSideWays = Mathf.Abs(Vector2.Dot(ParentBody.velocity, new Vector2(1, 0))) > 0.5;
Vector2 Offset = DripOffset + new Vector2(-ParentBody.velocity.y, ParentBody.velocity.x).normalized *
(WalkingSideWays ? 0.1f : 0.2f) *
(Step ? 1f : -1f);
DebrisLauncher.Splatter(DebrisType.Blood, ParentBody.position + Offset, Vector2.zero, 1 + (int)(Random.value * 5), 0f, 360f, false);
Drips++;
if (Drips >= DripCount) {
Destroy(gameObject);
}
LastDropTime = Time.time;
}
}
}
}