Столкновения объектов

Вопросы по работе с Godot 3D.
Правила форума
Читайте Правила общения
Ответить
Disighton
Новичок
Сообщения: 9
Зарегистрирован: 22 июн 2020, 14:51
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Столкновения объектов

Сообщение Disighton »

Здравствуйте. У меня такой вопрос, как проверить столкновение двух объектов? Допустим, я стреляю в бочку. Я хочу проверить, попала ли пуля в эту бочку.
Хочу разобраться с этой темой, тогда на основе этого смогу уже другие моменты самостоятельно реализовать))
Заранее спасибо.

Аватара пользователя
SkanerSoft
Администратор
Сообщения: 100
Зарегистрирован: 23 май 2020, 20:08
Откуда: Питер
Благодарил (а): 18 раз
Поблагодарили: 43 раза
Контактная информация:

Re: Столкновения объектов

Сообщение SkanerSoft »

Автор и ведущий канала Godot 3D Russia

Disighton
Новичок
Сообщения: 9
Зарегистрирован: 22 июн 2020, 14:51
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Столкновения объектов

Сообщение Disighton »

SkanerSoft писал(а):
28 июн 2020, 21:08
Я уже запутался с системой Годо. Я проверяю, есть ли у столкнувшегося с пулей объекта функция take_gamage(), если да, то у тела вызывается
эта функция.
Вот код пули:
extends Area

var speed: float = 600.0
var damage: int = 3

func _process(delta):
translation -= global_transform.basis.z * speed * delta


func _on_Bullet_body_entered(body):
if body.has_method("take_damage"):
body.take_damage(damage)

Вот код мишени...

extends MeshInstance

onready var ui : Node = get_node("../../CanvasLayer/ui")
onready var player : Node = get_node("../../player")
var damage = 1
var sost = 3
func take_damage(damage):
sost -= 1
player.add_score()

Сама функция работает. Я пробовал вызывать её при перезарядки. Всё работает, и в интерфейсе очки прибавляются. Но почему не объект не понимает, что с чем-то столкнулся.

Аватара пользователя
$noname-
Свой человек
Сообщения: 82
Зарегистрирован: 27 май 2020, 15:44
Откуда: Almaty
Благодарил (а): 12 раз
Поблагодарили: 46 раз
Контактная информация:

Re: Столкновения объектов

Сообщение $noname- »

Disighton писал(а):
29 июн 2020, 11:34
SkanerSoft писал(а):
28 июн 2020, 21:08
Я уже запутался с системой Годо. Я проверяю, есть ли у столкнувшегося с пулей объекта функция take_gamage(), если да, то у тела вызывается
эта функция.
Вот код пули:
extends Area

var speed: float = 600.0
var damage: int = 3

func _process(delta):
translation -= global_transform.basis.z * speed * delta


func _on_Bullet_body_entered(body):
if body.has_method("take_damage"):
body.take_damage(damage)

Вот код мишени...

extends MeshInstance

onready var ui : Node = get_node("../../CanvasLayer/ui")
onready var player : Node = get_node("../../player")
var damage = 1
var sost = 3
func take_damage(damage):
sost -= 1
player.add_score()

Сама функция работает. Я пробовал вызывать её при перезарядки. Всё работает, и в интерфейсе очки прибавляются. Но почему не объект не понимает, что с чем-то столкнулся.
А у тебя 2д игра?
Just $noname-

Ответить