• 28_ue4进阶末日生存游戏开发[设置昼夜交替]


    我们在GlobalTimer里添加一个变量IsDayTime

    该变量为true的时候,代表白天,false代表晚上。

    当时间>6且<18,为白天

     创建两个事件,一个enterday,一个enternight

    修改一下逻辑,修改变量,同时可以激活事件

    ----------------------------------------------------------------------------------------------------------------

    下面将灯光改成动态效果

    将light source变成可移动光

     cast shadow也一定勾上。

    打开世界设置,这样修改

    然后构建灯光(我这里构建失败了,但是教程上是可以的)

    每次移动light source,我们可以点击sky sphere的refresh按钮,太阳的位置和光色就变了。

     在globaltimer里面,添加sunliught变量,类型是方向光引用

     

    我们将该变量设为public

     给变量赋值

     在globaltimer里面设置灯光的旋转

    这里为啥不用setworldRotation呢,因为setactorrotation是设置整体的旋转, setworldRotation是设置组件的旋转。

    先将旋转位置调到0,0,0

    把向量分开

     用时间去驱动y轴,速度*10

     再添加一个变量,命名为skysphere,类型为BPskysphere引用,并设为public

     

    为变量赋值

      对skysphere进行更新

    连线

     把天光也改成可移动

     在globaltimer设置skylight变量,类型是skylight的引用,并设置成public

     

     在场景中为变量赋值

    重新获取天空

     连线

    测试成功

    重新修改太阳旋转规则:如果一天是3s,如果目前游戏时间是10s的话,10%3=3余1。

    那么现在就是第四天的第1/3的时间。太阳每天(每3s)转360°,那么此时太阳就转了360*1/3=120。

    为了让日出日落符合6点和18点的需求,我们为角度加了一个提前量90,让其事件与日出日落同步。

    测试成功。 

  • 相关阅读:
    从零开始的C++(十五)
    docker “no space left on device” 解决方案
    敏感词检测库ToolGood.Words中IllegalWordsSearch类使用简介
    架构核心技术之微服务架构
    电源基础元件
    最长连续序列(哈希解)
    读入分组后写成多个文件
    CV—cs231n二刷
    Codeforces Round #818 (Div. 2)
    Ubuntu apt-get换源
  • 原文地址:https://blog.csdn.net/zhang2362167998/article/details/126132086