Godot脚本引擎入门-VisualScript(七)

第二部分完善游戏逻辑和启动窗口画面

  1. 角色逻辑处理
    • 改变角色动画
    • 角色的碰撞检测
  2. 敌人场景需要敌人的刚体组件(RigidBody2D),动画图片(AnimationSprite),碰撞图形(CollisitionShape2D),可见控件(VisibilityNotifier2D)

    • 敌人动画

    • 敌人碰撞检测

    • 敌人游戏逻辑

  3. 主场景需要3个计时器以及位置控件

    • 敌人计时器(Timer)
      随机出现敌人
    • 分数计时器(Timer)
      增加分数
    • 启动计时器(Timer)
      开始游戏

    • 位置控件(Position2D)
      设置角色的初始位置

  4. 启动窗口画面需要一个消息计时器,两个Label控件,一个是分数显示的和显示游戏信息,最后一个开始按钮的Button空间

    • 消息计时器Timer
      改变分数计时器
    • 分数控件 Label
      显示分数
    • 开始按钮 Button
      启动游戏
    • 消息显示 Label
      显示游戏的信息

以上是我们游戏需要用到的所有控件。现在接着上次我们还没有处理完角色的动画,在player脚本中,我们在创建一个新的函数为change_ani用来改变玩家的角色 。

首先我们要判断玩家的x不等于0 ,改变玩家动画左右翻转,如果y不等于0,就让角色动画上下翻转。如图1-1
Godot脚本引擎入门-VisualScript(七)_第1张图片
然后我们在_process函数中将它连接起来。如图1-2
Godot脚本引擎入门-VisualScript(七)_第2张图片
当角色进入时,我们需要让自己隐藏,然后我们需要一个信号,在信号下面我们需要创建一个自定义信号为hit,这个hit信号时用来与敌人发生碰撞的,最后我们禁用碰撞属性。如图1-3所示:
Godot脚本引擎入门-VisualScript(七)_第3张图片
现在我们的角色逻辑已经基本完成了。
接下来完成我们的步骤2创建一个敌人的场景命名为Mob。
Godot脚本引擎入门-VisualScript(七)_第4张图片
在动画图片中我们需要三个动画如图所示

接下来创建敌人的脚本,首先我们需要三个变量,敌人的最小速度和最大速度以及一个数组
Godot脚本引擎入门-VisualScript(七)_第5张图片
我们创建一个_ready函数,在_ready函数中我们改变敌人的动画图片如图所示
Godot脚本引擎入门-VisualScript(七)_第6张图片
在可见空间下我们需要一个信号,当敌人离开屏幕时就释放它们
Godot脚本引擎入门-VisualScript(七)_第7张图片

现在开始创建一个主场景命名为Main,首先我们实例一个Player场景,然后再添加三个计时器一个位置控件一个路径空间和位置出现控件。
Godot脚本引擎入门-VisualScript(七)_第8张图片
首先我们创建一个变量敌人的对象一个score用来显示分数。接下来我们要需要三个计时器我们分别添加三个信号
Godot脚本引擎入门-VisualScript(七)_第9张图片
在_ready函数中,我们首先加载敌人场景,并给一个随机数种子。
Godot脚本引擎入门-VisualScript(七)_第10张图片
new_game中我们需要初始化分数为0,然后调用玩家的start方法,并设者玩家的位置,接下来我们调用startTimer计时器的start方法
Godot脚本引擎入门-VisualScript(七)_第11张图片
在game_over中,停止分数计时器,停止敌人计时器
Godot脚本引擎入门-VisualScript(七)_第12张图片
在_on_StartTimer_timeout()信号中,首先我们要启动敌人计时器,设置分数为0,然后启动分数计时器。
Godot脚本引擎入门-VisualScript(七)_第13张图片
在_on_ScoreTimer_timeout信号中增加分数
Godot脚本引擎入门-VisualScript(七)_第14张图片
在_on_MobTimer_timeout信号中,
第一步:要设这敌人随机出现的位置然后实例敌人,并将它添加到主场景中。
Godot脚本引擎入门-VisualScript(七)_第15张图片
第二步设置敌人的方向,将敌人随机出现的位置赋值给一个变量direction,
Godot脚本引擎入门-VisualScript(七)_第16张图片
第三步:将敌人出现的位置赋值给敌人的位置。
Godot脚本引擎入门-VisualScript(七)_第17张图片
第四步:设置一个随机的方向,这个方向是一个弧度值,我们必须转化为角度。
Godot脚本引擎入门-VisualScript(七)_第18张图片
第五步,将获得的方向赋值给敌人,并设置敌人的线性运动。
Godot脚本引擎入门-VisualScript(七)_第19张图片
最后将它们按逻辑顺序连接起来。
Godot脚本引擎入门-VisualScript(七)_第20张图片
主场景已经完成了,最后实现我们的启动窗口场景。
我们将启动窗口场景命名为HUD,并添加几个控件。
Godot脚本引擎入门-VisualScript(七)_第21张图片
在HUD场景中我们创建几个自定义函数,显示游戏结束show_game_over,显示信息show_message,和更新分数update_socre,然后添加两个信号:1是消息计时器,2按钮按下,最后自定义一个信号start_game
_on_MessageTimer_timeout信号中我们隐藏MessageLabel控件的文字。
Godot脚本引擎入门-VisualScript(七)_第22张图片
_on_StartButton_pressed信号中,我们隐藏开始按钮,并发射一个开始游戏的信号。
Godot脚本引擎入门-VisualScript(七)_第23张图片
show_game_over函数中
Godot脚本引擎入门-VisualScript(七)_第24张图片
show_message
Godot脚本引擎入门-VisualScript(七)_第25张图片
update_score
Godot脚本引擎入门-VisualScript(七)_第26张图片
终于完成了这个游戏的制作,研究了几天的时间终于做出来了。最后来试验一下游戏效果吧!

你可能感兴趣的:(Godot脚本引擎入门-VisualScript(七))