PoliceSiren.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PoliceSiren : MonoBehaviour {
  5. public GameObject blueLight, redLight;
  6. public bool isSirenOn;
  7. public float colorInterval;
  8. private float timer;
  9. private MeshRenderer mr;
  10. private Shader defShader, unlitShader;
  11. private void Start() {
  12. mr = GetComponent<MeshRenderer>();
  13. defShader = Shader.Find("Standard");
  14. unlitShader = Shader.Find("Unlit/Color");
  15. }
  16. private void Update() {
  17. if (isSirenOn) {
  18. if(timer > colorInterval) {
  19. // index 3 : blue, index 4 : red
  20. bool isBlueUnlit = mr.materials[3].shader == unlitShader;
  21. blueLight.SetActive(!isBlueUnlit);
  22. redLight.SetActive(isBlueUnlit);
  23. mr.materials[3].shader = isBlueUnlit ? defShader : unlitShader;
  24. mr.materials[4].shader = isBlueUnlit ? unlitShader : defShader;
  25. timer = 0;
  26. }
  27. timer += Time.deltaTime;
  28. }
  29. }
  30. }