- Сообщений: 702
- Спасибо получено: 856
Godot Engine. Проект "Арканоид"
2 года 9 мес. назад #129490
от Snake Fightin
Snake Fightin ответил в теме Godot Engine. Проект "Арканоид"
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Doctor_Bug
-
Автор темы
- Не в сети
- Завсегдатай
-
- Из горизонта события! ▪_■
Скрыть
Больше
- Сообщений: 574
- Спасибо получено: 897
2 года 9 мес. назад #129492
от Doctor_Bug
Doctor_Bug ответил в теме Godot Engine. Проект "Арканоид"
Снейк пройди 10 главу до темы с игровыми очками, и вышли скрин с отображением сердец (кликни один раз по узлу AnimatedSprite2D, чтобы внизу отобразились кадры анимации), ну и повторно сам скрипт мяча. Если не смогу решить проблему, тогда понадобиться сам проект для дальнейшего анализа
Баг изучает Godot Engine. А слушает эту музыку ~~>
Мое сердце
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
2 года 9 мес. назад - 2 года 9 мес. назад #129498
от Snake Fightin
Snake Fightin ответил в теме Godot Engine. Проект "Арканоид"
Не, интерфейс жизней не шевелится. Шары конечны, +3 шара к тому, что первоначальный, всего 4.
Очки начисляются, бонусную систему не понял, но вписал, ощущение что бонусы не начисляются.
Часть сообщения скрыта для гостей. Пожалуйста, авторизуйтесь или зарегистрируйтесь, чтобы увидеть его.
Очки начисляются, бонусную систему не понял, но вписал, ощущение что бонусы не начисляются.
ВНИМАНИЕ: Спойлер!
Code:
extends KinematicBody2D
var speed = 79
var velocity = Vector2.ZERO
var run = false
var player
var animation_hearts
var hearts = 3
var preloaded = true
var bonus_point = 5
var check = 0
var combo_hit = 0
func _ready():
player = get_parent().find_node("Player")
animation_hearts = get_parent().find_node("Hearts")
func start():
velocity.x = [-1, 1][randi() % 2]
velocity.y = -1
func _physics_process(delta):
if preloaded:
preloaded = false
return
var collision_object = move_and_collide(speed * velocity * delta)
velocity = velocity.normalized()
if collision_object:
velocity = velocity.bounce(collision_object.normal)
if collision_object.collider.name == "Player":
velocity.x = get_x_bounce_direction()
if collision_object.collider.is_in_group('Bricks_group'):
collision_object.collider.hit()
combo_hit += 1
if combo_hit > 1:
check += 1
else:
combo_hit = 0
check = 0
Global.score += bonus_point * check
is_ball_out()
cling()
if Input.is_action_just_pressed("Fire") and !run:
start()
run = true
func get_x_bounce_direction():
var relative_x = position.x - player.position.x
var percentage = relative_x / player.width
return (percentage - 0.5) * 2
func cling():
if !run:
position.x = player.position.x + (player.width / 2)
func is_ball_out():
if !$VisibilityNotifier2D.is_on_screen():
run = false
position.y = player.position.y - 3
velocity = Vector2.ZERO
if hearts > 0:
hearts -= 1
else:
queue_free()
func drawing_hearts():
if hearts > 0:
animation_hearts.frame = hearts - 1
else:
animation_hearts.visible = false
Часть сообщения скрыта для гостей. Пожалуйста, авторизуйтесь или зарегистрируйтесь, чтобы увидеть его.
Последнее редактирование: 2 года 9 мес. назад пользователем Snake Fightin.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Doctor_Bug
-
Автор темы
- Не в сети
- Завсегдатай
-
- Из горизонта события! ▪_■
Скрыть
Больше
- Сообщений: 574
- Спасибо получено: 897
2 года 9 мес. назад - 2 года 9 мес. назад #129499
от Doctor_Bug
Doctor_Bug ответил в теме Godot Engine. Проект "Арканоид"
Снейк я понял в чем ошибка, и кстати нашел недочет в уроке. Смотри мы создаем собственную функцию drawing_hearts() но мы её нигде не вызывали, по этому анимация кадров и не учитывалось. Помести её в физический процесс "_physics_process"
Между функцией is_ball_out() и cling()
Пошел править урок, упустил момент. Спасибо
Напиши если не сработало, но по идеи все должно работать =Р
Между функцией is_ball_out() и cling()
Пошел править урок, упустил момент. Спасибо

Напиши если не сработало, но по идеи все должно работать =Р
Баг изучает Godot Engine. А слушает эту музыку ~~>
Мое сердце
Последнее редактирование: 2 года 9 мес. назад пользователем Doctor_Bug.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
2 года 9 мес. назад - 2 года 9 мес. назад #129505
от Snake Fightin
Кстати, при такой логике тележка тоже не в группе "кирпичи", как и стены, поэтому при ударе о тележку проигрывается и звук тележки и звук стены.
Snake Fightin ответил в теме Godot Engine. Проект "Арканоид"
ВНИМАНИЕ: Спойлер!
В игре у нас не так много объектов с которым может столкнуться наш шарик. Для кирпичей мы пропишем уникальные имена, но позже. В месте где сталкивается шарик с кирпичами есть и обратная сторона, вот за эту сторону и отвечает наша стена. Пропишем звук и там.
Кстати, при такой логике тележка тоже не в группе "кирпичи", как и стены, поэтому при ударе о тележку проигрывается и звук тележки и звук стены.
Последнее редактирование: 2 года 9 мес. назад пользователем Snake Fightin.
Спасибо сказали: Doctor_Bug
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.114 секунд
