我目前正在制作一款探索游戏,并且日夜使用动态时间变换器。我想知道如何在当天中午关闭播放器的手电筒。 TOD设置的脚本:
var slider: float;
var slider2: float;
var Hour: float;
private
var Tod: float;
var sun: Light;
var speed = 50;
var NightFogColor: Color;
var DuskFogColor: Color;
var MorningFogColor: Color;
var MiddayFogColor: Color;
var NightAmbientLight: Color;
var DuskAmbientLight: Color;
var MorningAmbientLight: Color;
var MiddayAmbientLight: Color;
var NightTint: Color;
var DuskTint: Color;
var MorningTint: Color;
var MiddayTint: Color;
var SkyBoxMaterial1: Material;
var SkyBoxMaterial2: Material;
var SunNight: Color;
var SunDay: Color;
//THIS WAS ADDED IN TUTORIAL NUMBER 24. It allows for changing the color that reflects of a water object.
//Uncheck IncludeWater if you are not interested in using this.
var Water: GameObject;
var IncludeWater = false;
var WaterNight: Color;
var WaterDay: Color;
function OnGUI() {
if (slider >= 1.0) {
slider = 0;
}
slider = GUI.HorizontalSlider(Rect(20, 20, 200, 30), slider, 0, 1.0);
Hour = slider * 24;
Tod = slider2 * 24;
sun.transform.localEulerAngles = Vector3((slider * 360) - 90, 0, 0);
slider = slider + Time.deltaTime / speed;
sun.color = Color.Lerp(SunNight, SunDay, slider * 2);
//THIS WAS ADDED IN TUTORIAL NUMBER 24. It allows for changing the color that reflects of a water object.
//Uncheck IncludeWater if you are not interested in using this.
if (IncludeWater == true) {
Water.renderer.material.SetColor("_horizonColor", Color.Lerp(WaterNight, WaterDay, slider2 * 2 - 0.2));
}
if (slider < 0.5) {
slider2 = slider;
}
if (slider > 0.5) {
slider2 = (1 - slider);
}
sun.intensity = (slider2 - 0.2) * 1.7;
if (Tod < 4) {
//it is Night
RenderSettings.skybox = SkyBoxMaterial1;
RenderSettings.skybox.SetFloat("_Blend", 0);
SkyBoxMaterial1.SetColor("_Tint", NightTint);
RenderSettings.ambientLight = NightAmbientLight;
RenderSettings.fogColor = NightFogColor;
}
if (Tod > 4 && Tod < 6) {
RenderSettings.skybox = SkyBoxMaterial1;
RenderSettings.skybox.SetFloat("_Blend", 0);
RenderSettings.skybox.SetFloat("_Blend", (Tod / 2) - 2);
SkyBoxMaterial1.SetColor("_Tint", Color.Lerp(NightTint, DuskTint, (Tod / 2) - 2));
RenderSettings.ambientLight = Color.Lerp(NightAmbientLight, DuskAmbientLight, (Tod / 2) - 2);
RenderSettings.fogColor = Color.Lerp(NightFogColor, DuskFogColor, (Tod / 2) - 2);
//it is Dusk
}
if (Tod > 6 && Tod < 8) {
RenderSettings.skybox = SkyBoxMaterial2;
RenderSettings.skybox.SetFloat("_Blend", 0);
RenderSettings.skybox.SetFloat("_Blend", (Tod / 2) - 3);
SkyBoxMaterial2.SetColor("_Tint", Color.Lerp(DuskTint, MorningTint, (Tod / 2) - 3));
RenderSettings.ambientLight = Color.Lerp(DuskAmbientLight, MorningAmbientLight, (Tod / 2) - 3);
RenderSettings.fogColor = Color.Lerp(DuskFogColor, MorningFogColor, (Tod / 2) - 3);
//it is Morning
}
if (Tod > 8 && Tod < 10) {
RenderSettings.ambientLight = MiddayAmbientLight;
RenderSettings.skybox = SkyBoxMaterial2;
RenderSettings.skybox.SetFloat("_Blend", 1);
SkyBoxMaterial2.SetColor("_Tint", Color.Lerp(MorningTint, MiddayTint, (Tod / 2) - 4));
RenderSettings.ambientLight = Color.Lerp(MorningAmbientLight, MiddayAmbientLight, (Tod / 2) - 4);
RenderSettings.fogColor = Color.Lerp(MorningFogColor, MiddayFogColor, (Tod / 2) - 4);
//it is getting Midday
}
}
谢谢!
答案 0 :(得分:0)
如果您需要在特定时间关闭的Light是一个单独的游戏对象,您可以做这样的事情
public var Light : GameObject; // Then link it in , in the editor
然后你添加
Light.SetActive(true); // or false
在你想要的时间间隔中你的一个条件(if语句),启用和禁用某些东西的另一种方法是添加.enabled = false; //或true,作为Light对象的回调