【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

作者:神秘网友 发布时间:2020-10-31 21:34:22

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击波的诞生

书接上文《Godot Engine:用粒子系统实现一个波动拳的冲击波,对,就是那个哈豆啃》

效果图

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

文章目录

      • 效果图
      • HadokenBall
        • HadokenBall的脚本
      • 使用BoneAttachment节点来获取手部骨骼的位置
      • 隆的代码
      • 使用AnimationPlayer设定动画回调

HadokenBall

为HadokenBall加一个脚本
【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

HadokenBall的脚本

HadokenBall有两个状态:

  • 在手中运气团球的状态:会跟随手部运动
  • 脱离手掌的状态:匀速直线运动

下面代码中的position_ref用于获取手部的位置,当后来它被赋空后,就意味着HadokenBall离手了

#HadokenBall.gd
extends Particles
class_name HadokenBall

var position_ref :Spatial = null

func _ready():
	add_to_group("HadokenBall")

func _process(delta):
	if position_ref != null :
		global_transform.origin = position_ref.global_transform.origin
	else:
		translation += Vector3.RIGHT * 2 * delta

func init_ball(ref):
	position_ref = ref
	transform.origin = position_ref.global_transform.origin
	ref.get_tree().root.add_child(self)

func release_ball():
	position_ref = null

使用BoneAttachment节点来获取手部骨骼的位置

BoneAttachment节点的用法详见老王的另一篇博文《Godot Engine:用BoneAttachment节点为骨骼附加物》

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击
将"BoneAttachment"更名为"HadokenBallPos"
【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击
将"HadokenBallPos"定位到右手

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

隆的代码

  • 先预加载“HadokenBall.tscn”
  • 定义两个用于动画回调的回调函数,一个用于生成HadokenBall.tscn 一个用于通知其离手
#Ryu
extends Spatial

var h_ball_prefab : PackedScene = preload("res://VFX/HadokenBall.tscn")

onready var playback : AnimationNodeStateMachinePlayback = $AnimationTree.get("parameters/playback")


func _ready():
	add_to_group("Ryu")

func do_combo(move_name):
	playback.travel(move_name + "@Ryu")
			
#AnimationPlayer调用		
func make_ball():
	var h_ball : HadokenBall = h_ball_prefab.instance() as HadokenBall
	h_ball.init_ball($rig/Skeleton/HadokenBallPos)

#AnimationPlayer调用		
func release_ball():
	get_tree().call_group("HadokenBall","release_ball")
	

使用AnimationPlayer设定动画回调

动画回调的使用方法详见《Godot Engine:用Call Method Track(方法回调轨道)实现动画回调》

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击

【老王的游戏开发教程】名场面临摹第二弹 之街霸3D:论一个冲击相关教程

  1. Vscode Web开发 setting.json相关配置

    Vscode Web开发 setting.json相关配置 ctrl+shift+p输入setting.js选首选项 setting.json配置 {liveServer.settings.donotShowInfoMsg:true,vetur.format.defaultFormatter.html:js-beautify-html,//html不换行vetur.format.defaultFormatter.js:vscode-types

  2. Linux大数据开发centos7中的hive开发环境搭建

    Linux大数据开发centos7中的hive开发环境搭建 目录 说明 解压安装包 重命名 添加环境变量 使环境变量生效 创建hive临时存储数据文件夹 复制并编写hive-env.sh配置文件 创建hive-site.xml文件 上传mysql的驱动文件 初始化hive元数据库 启动hive 搭建完成 说明

  3. 贪吃蛇小游戏——我的第一篇博客

    贪吃蛇小游戏——我的第一篇博客 C语言入门者可制作的小游戏 欢迎来到我的博客 游戏效果 思路 总代码 心得 欢迎来到我的博客 我是大一的新生,这是我的第一篇博客,我也是在最近学完了C语言基础,想在这里分享我制作的第一个小游戏——贪吃蛇。在制作贪吃蛇的

  4. 支持子命令命令行程序支持包开发

    支持子命令命令行程序支持包开发 命令行实用程序并不是都象 cat、more、grep 是简单命令。go 项目管理程序,类似 java 项目管理 maven、Nodejs 项目管理程序 npm、git 命令行客户端、 docker 与 kubernetes 容器管理工具等等都是采用了较复杂的命令行。即一个

  5. 画出koch snowflake(glad+glfw的方法进行opengl开发)

    画出koch snowflake(glad+glfw的方法进行opengl开发) 本文使用glad+glfw的方法进行opengl开发资源可下载:https://download.csdn.net/download/qq_32563773/13077903 对于koch snowflake的画法有很多,我选择采用对三角形的线段进行划分的方法,取线段的中

  6. Revit二次开发01——环境搭建(附Revit 2018 + Visual Studio 20

    Revit二次开发01——环境搭建(附Revit 2018 + Visual Studio 2017下载地址) 目录 1、准备工作 1.1 安装Revit 2018 1.2 安装Revit 2018 SDK 1.3 安装Visual Studio 2017 2、配置Addin Manager 3、测试 3.1 启动Visual Studio,新建一个项目,选择类库(.NET

  7. JAVA基础(二)—— java开发工具选择及第一个程序

    JAVA基础(二)—— java开发工具选择及第一个程序 正所谓工欲善其事必先利其器,一款好的开发工具能帮助我们更快、更好的完成开发任务。 1.Eclipse Eclipse做为一款开发源代码的Java扩展性开发平台,是行业内半数Java开发人员都会选择的开发工具(也是大多数

  8. APP开发项目流程详解,长知识了!

    APP开发项目流程详解,长知识了! APP的开发流程并不复杂,APP开发人员一般都包含着UI设计师 、前端开发、后端开发、测试专员、产品经理等等。 而根据开发人员的分工不同,可以把APP的开发项目流程分为三个阶段:需求阶段–开发阶段–发布阶段。 具体流程如下