Godot基础教程05:刚体炮弹

2023-10-17 11:50

本文主要是介绍Godot基础教程05:刚体炮弹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先讲一个好消息,现在已经拥有更全面的中文版本了,详情如下:
https://www.bilibili.com/video/av94395738
你会说:咦?我从官网上下的不就是中文版本吗?
但是官网上的中文版本并没有右侧属性列表和api文档的翻译,而这个中文版本包含了大部分的属性与api翻译,推荐大家给予支持。
从本章起,软件截图将使用中文版本,更加直观!

2D物理体概述

在godot中,2D物理体类为PhysicsBody2D,它是所有2d物理体的基类,不能添加到节点列表中。
它的3个派生类都可以添加到节点列表中,它们分别是:KinematicBody2DRigidBody2DStaticBody2D

  • StaticBody2D:静态物理体,这种物理体将会静止不动,可以用作地面、墙壁这些不受重力影响、碰撞时也不会移动的物体
  • RigidBody2D:刚体,只需要设置重力、质量等,它就会自动运动
  • KinematicBody2D:动态物理体,这种物理体适合在代码中控制其移动,当前方发生碰撞时,将会停止移动

因为这些类都继承自CollisionObject2D(碰撞对象)类,所以它们都会相互碰撞。

实例修改

首先,我们要修改的是zidan场景,打开这个场景:
子弹场景
这里可以注意到,根节点由原来的Node2D类型换成了RigidBody2D类型,并且在Sprite的同级增加了CollisionShape2D节点。
选中CollisionShape2D节点,在右侧属性面板中,形状右侧点击小箭头,选择新建CircleShape2D
新建圆形
新建成功后,选中CollisionShape2D节点,在场景中就会出现蓝色小圈和红色控制手柄,直接拖放就可以调整大小,将它调整到和炮弹一样大:
调整大小
接下来将zidan.gd脚本文件的内容修改为:

extends RigidBody2Dfunc _process(delta):#当超出屏幕时,删除自身以释放资源if self.position.y > 1000:self.get_parent().remove_child(self)

可以看到,少了很多代码,只剩下删除自身的部分
接下来,打开main.gd脚本,找到如下部分(上一节中是75行):

		#使子弹的角度与炮管的当前角度相同zidanObj.rotation_degrees = $dapao/paoguan.rotation_degrees

将这段代码修改一下:

		#--旧代码--#使子弹的角度与炮管的当前角度相同#--旧代码--zidanObj.rotation_degrees = $dapao/paoguan.rotation_degrees#--新代码--设置初始线速度zidanObj.linear_velocity = ($dapao/paoguan/zidanguadian.global_position - $dapao/paoguan.global_position) * 2

下面来对上述改动解释一下:

  • 首先是子弹场景,修改成了刚体节点,刚体会受到重力的影响自动往下方掉落。
  • 只需要向炮弹设置初始线速度,相当于是将炮弹“发射”出去的力,这个速度是一个向量,所以用子弹挂点的全局坐标减去炮管的位置,就得到了这个向量。
  • 但是这个向量实际测试时,炮弹发射的距离很近,所以在后面×2,使初始速度更大(如果还嫌射得近可以改成×3或更大的数值)

这篇关于Godot基础教程05:刚体炮弹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225170

相关文章

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

C++入门(05-2)从命令行执行C++编译器_GCC

文章目录 GCC编译器1. 下载MinGW-w64,安装(不推荐)2. 使用MSYS2安装MinGW-w64(推荐)2.1 安装MSYS22.2 初始化和更新2.3 安装MinGW-w64编译器2.3 在MSYS2 Shell中导航到代码目录2.4 使用 g++ 编译2.5 运行可执行文件 GCC编译器 GCC(GNU Compiler Collection)是一个开源编译器集

C++入门(05)从命令行执行C++编译器_MSVC

文章目录 1.C++ 编译器2. 常用 C++ 编译器MSVC(Microsoft Visual C++)GCC(GNU Compiler Collection)Clang 3. MSVC 编译器3.1 开发者命令提示符3.2 编译 C++ 代码 1.C++ 编译器 将C++源代码(扩展名为 .cpp )转换成计算机可以运行的可执行程序 编译器会检查代码的语法和语义,生成相应

炮弹【USACO】

题目背景 时/空限制:1s / 64MB 题目描述 贝茜已经精通了变成炮弹并沿着长度为 N 的数轴弹跳的艺术,数轴上的位置从左到右编号为 1,2,…,N 。 她从某个整数位置 S 开始,以 1 的起始能量向右弹跳。 如果贝茜的能量为 k ,则她将弹跳至距当前位置向前距离 k 处进行下一次弹跳。 从 1 到 N 的每个整数位置上均有炮击目标或跳板。 每个炮击目标和跳板都有一个在 0 到

龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以前往本人在B站的视频合集(图2所示)观看所有演示视频,合集首个视频链接为: 借助RT-Thread和LVGL

【SpringMVC学习05】SpringMVC中的异常处理器

SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。 异常处理思路 我们知道,系统中异常包括两类:预期异常和运行时异常(RuntimeException),前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的dao、service、controller出现异常都通过throws E

学习硬件测试05:NTC(ADC)+正弦波(DAC)+DMA(ADC+DAC)(P73、P76、P78)

文章以下内容全部为硬件相关知识,鲜有软件知识,并且记的是自己需要的部分,大家可能看不明白。 一、NTC(ADC) 1.1实验现象 本实验用 NTC 采集温度,数码管实时显示温度数据(整数),左下角 USB 小串口每隔 1S 打印温度信息。 1.2硬件电路 NTC 电阻是一个模拟温度传感器,随着温度的升高,电阻值逐渐减小。电路简单介绍如下: 电源滤波电容在 25℃ 室温下 NTC 电

python+selenium2学习笔记unittest-05测试用例实例

看一下非常简单的目录结构 test_baidu from selenium import webdriverimport unittestimport timeclass MyTest(unittest.TestCase):def setUp(self):self.driver = webdriver.Firefox()self.driver.maximize_window()self

postman基础教程-04run

Postman 工具自带了Runner功能,用于批量运行脚本。在运行时还可以使用外部的CSV或者json文件来指定数据 左侧collections下保存的测试集,点击小三角,点击run按钮 在runner页面中如下图,图1 是可以选择我们要运行的项目,图2是选择我们运行的环境,图3是运行次数和延迟时间,图4是选择的外部测试数据如csv 点击run 可以看到跑完了项目中所有的接口

postman基础教程-02环境变量

编写的API往往需要在多个环境下执行,而Postman 提供了两种类型的变量:环境变量和全局变量,从而很好的解决了这个问题。 环境变量有效范围仅仅在于你所选取的环境,全局变量对所有的环境都试用 api可能需要在拨通的环境中运行,所以api请求的服务器地址不能写死,希望是可以配置的,创建环境变量有多种方式。 环境变量 1.手工预先创建环境变量 点击小眼睛按钮即可创建环境变量,第一个是环境变量