Untitled
unknown
plain_text
a year ago
2.7 kB
9
Indexable
using UnityEngine;
using TouchScript;
using TouchScript.Pointers;
public class FireworksOnPress : MonoBehaviour
{
public ParticleSystem fireworks;
public Camera rayCastCamera;
public float maxRaycastDistance = 100f;
public AudioSource fireworks1;
public float minDistanceBetweenPresses = 0f;
public float pressDelay = 0f;
private Vector3 lastPressPosition;
private bool isFirstPress = true;
private float lastPressTime = -1f;
void Start()
{
if (rayCastCamera == null)
{
rayCastCamera = Camera.main;
if (rayCastCamera == null)
{
Debug.LogError("No camera assigned and no main camera found!");
}
}
}
private void OnEnable()
{
if (TouchManager.Instance != null)
{
TouchManager.Instance.PointersPressed += HandlePointersPressed;
}
}
private void OnDisable()
{
if (TouchManager.Instance != null)
{
TouchManager.Instance.PointersPressed -= HandlePointersPressed;
}
}
private void HandlePointersPressed(object sender, PointerEventArgs e)
{
foreach (var pointer in e.Pointers)
{
if (Time.time - lastPressTime < pressDelay) continue;
lastPressTime = Time.time;
Ray ray = rayCastCamera.ScreenPointToRay(pointer.Position);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, maxRaycastDistance))
{
if (isFirstPress || Vector3.Distance(hit.point, lastPressPosition) >= minDistanceBetweenPresses)
{
SpawnFireworks(hit.point);
lastPressPosition = hit.point;
isFirstPress = false;
}
else
{
Debug.Log("Press too close to the previous one. Minimum distance: " + minDistanceBetweenPresses);
}
}
}
}
void SpawnFireworks(Vector3 position)
{
Debug.Log("Spawning fireworks at: " + position);
ParticleSystem newFireworks = Instantiate(fireworks);
AudioSource newFireworksAudio = Instantiate(fireworks1);
newFireworksAudio.pitch = Random.Range(0.8f, 1.2f);
newFireworksAudio.Play();
newFireworks.transform.position = position;
newFireworks.Play();
Destroy(newFireworksAudio.gameObject, newFireworksAudio.clip.length);
Destroy(newFireworks.gameObject, newFireworks.main.duration);
}
}Editor is loading...
Leave a Comment