SunMovement.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Unity.VisualScripting;
  4. using UnityEditor.Experimental;
  5. using UnityEngine;
  6. public class SunMovement : MonoBehaviour
  7. {
  8. // Start is called before the first frame update
  9. public float rotationSpeed = 30f;
  10. public Transform rotateObj;
  11. public Transform targetObj;
  12. //public Transform targetCamera;
  13. public Light rotateLight;
  14. public Material daySkybox;
  15. public Material nightSkybox;
  16. void Start()
  17. {
  18. int hour = System.DateTime.Now.Hour;
  19. float rotateAngle = (12 - hour) * 13;
  20. //print(rotateAngle);
  21. if (hour < 6 || hour >= 18)
  22. {
  23. // night time
  24. //rotateLight.color = new Color(0, 0, 0.5f, 1);
  25. rotateLight.intensity = 0.65f;
  26. rotateLight.spotAngle = 50;
  27. //rotateLight.type = LightType.Spot;
  28. rotateLight.transform.rotation = Quaternion.Euler(50,180,0);
  29. UnityEngine.RenderSettings.skybox = nightSkybox;
  30. UnityEngine.RenderSettings.ambientIntensity = 0.3f;
  31. UnityEngine.RenderSettings.reflectionIntensity = 0.4f;
  32. // 狗狗创建灯光
  33. var dogLight = GameObject.Find("Dog Light").GetComponent<Light>();
  34. dogLight.intensity = 1.2f;
  35. }
  36. else
  37. {
  38. // day time
  39. UnityEngine.RenderSettings.skybox = daySkybox;
  40. UnityEngine.RenderSettings.ambientIntensity = 0.6f;
  41. UnityEngine.RenderSettings.reflectionIntensity = 0.8f;
  42. rotateLight.intensity = 1.2f;
  43. rotateObj.RotateAround(targetObj.transform.position, Vector3.forward, rotateAngle);
  44. }
  45. DynamicGI.UpdateEnvironment();
  46. //Debug.Log(rotateObj.transform.position);
  47. }
  48. // Update is called once per frame
  49. //void Update()
  50. //{
  51. //}
  52. }