godot RigidBody3D 碰撞检测示例

关键词:碰撞检测、godot、游戏开发、RigidBody3D、CSGBox3D

一、简介

在游戏开发中, 你经常需要知道游戏中的两个对象在何时相交或接触. 这被称为 碰撞检测 . 检测到碰撞时, 你通常希望某些事情发生. 这被称为 碰撞响应 .

Godot在2D和3D中提供了许多碰撞对象, 以提供碰撞检测和响应. 你可能很难决定哪个适合你的项目. 一旦了解了每种方法的工作原理以及它们的优缺点, 你就可以避免出现问题并简化开发过程.

本文主要是RigidBody3D节点的碰撞检测。

二、场景搭建

按照下面场景书构造一个场景:

  • floor表示地板,launch是发射台,landingpad是降落台,这三个节点的类型都是CSGBox3D。
  • player是RigidBody3D。

给player添加MeshInstance3D和CollisionShape3D子节点,并设置合适的碰撞形状。

给player场景添加脚本(GDscript):

extends RigidBody3D


# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	if Input.is_action_pressed("ui_up"):
		apply_central_force(Vector3.UP * delta * 1000.0)
	if Input.is_action_pressed("ui_left"):
		apply_central_force(Vector3.LEFT * delta * 500.0)
	if Input.is_action_pressed("ui_right"):
		apply_central_force(Vector3.RIGHT * delta * 500.0)
三、添加信号

开启contact Monitor 并把最大碰撞点数设置为合适的值。

添加信号

floor,launch,landingpad启用碰撞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值