Тёмный
Jon Topielski
Jon Topielski
Jon Topielski
Подписаться
I make videos on the Godot game engine. I also post about games I've worked on.
Комментарии
@Big_Dai
@Big_Dai 5 дней назад
Uh? So, just a common tennis game? What a waste.. considering you have spider-like players with suction feet! Where your player could move around and stretching their legs, only to let go of the rest and snap back to a specific location with the press of a button for reach or added speed/power. You are welcome.
@arcad3machine
@arcad3machine 7 дней назад
I'm getting an error that's "invalid assignment of property or key 'value' with value of type 'int' on a base object of type 'null instance'". this is my code: extends Control signal textboxClosed @export var enemy : Resource var currentPlayerHealth = 0 var currentEnemyHealth = 0 func _ready(): setHealth($EnemyContainer/HealthBar, enemy.health, enemy.health) setHealth($PlayerPanel/PlayerData/HealthBar, HealthState.currentHealth, HealthState.maxHealth) $EnemyContainer/Enemy.texture = enemy.texture currentPlayerHealth = HealthState.currentHealth currentEnemyHealth = enemy.health $Textbox.hide() $ActionsPanel.hide() displayText("A wild %s appears!" % enemy.name.to_upper()) await("textboxClosed") $ActionsPanel.show() func setHealth(progressBar, health, maxHealth): progressBar.max_value = maxHealth progressBar.value = health progressBar.get_node("Label").text = "HP: %d/%d" % [health, maxHealth] func _input(event): if Input.is_action_just_pressed("ui_accept") or Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT) and $Textbox.visible: $Textbox.hide() emit_signal("textboxClosed") func displayText(text): $Textbox.show() $Textbox/Label.text = text func _on_run_pressed(): displayText("You escaped.") await("textboxClosed") await get_tree().create_timer(.25).timeout get_tree().quit() func enemyTurn(): displayText("%s attacks." % enemy.name) await("textboxClosed") currentPlayerHealth = max(0, currentPlayerHealth - enemy.damage) setHealth($PlayerPanel/PlayerData/HealthBar, currentPlayerHealth, HealthState.maxHealth) displayText("%s dealt %d damage" %[enemy.name, enemy.damage]) $AnimationPlayer.play("shake") enemyTurn() func _on_attack_pressed(): displayText("You attack.") await("textboxClosed") currentEnemyHealth = max(0, currentEnemyHealth - HealthState.damage) setHealth($EnemyContainer/HealthBar, currentEnemyHealth, enemy.health) $AnimationPlayer.play("enemyDamaged") displayText("You dealt %d damage." % HealthState.damage) enemyTurn() Any tips to fix it?
@WzRd_Gt
@WzRd_Gt 10 дней назад
Tried re-creating the OnScreenKeyboard for my project and when using "OnScreenKeyboard.set_on_screen_input_vector(input_vector)" for the player script, it says "Identifier "OnScreenKeyboard" not declared in the current scope.". Very new to Gdscript and coding in general. I downloaded the source code godot project file from this to see how it works but can't seem to figure out how it works on this end but not on mine.
@brotherkito
@brotherkito 10 дней назад
In Godot 4, the margin properties have been moved from the HBoxContainer into the MarginContainer object in case anyone is having trouble following that part.
@tekmonster10
@tekmonster10 18 дней назад
where is the size flags in gd4
@RuthlessMetalYT
@RuthlessMetalYT 22 дня назад
damn I wish I was this good at coding, trying to learn but I'm just too damn stupid haha
@ince55ant
@ince55ant 25 дней назад
VERTEX.y += wave_height * sin((wave_frequency * VERTEX.x) + (wave_speed * TIME));
@Deathkyun
@Deathkyun 26 дней назад
Thank you so much!
@luisfernandosousa81
@luisfernandosousa81 26 дней назад
muito obrigado. Me ajudou bastante a entender essa função. Estava precisando de uma aula assim.
@ThatGuyYesHim
@ThatGuyYesHim Месяц назад
How would i take this and trsition a 3d world into this scene?
@AppMaker728
@AppMaker728 Месяц назад
They talk about not enough godot tutorials it's plenty
@Idkikdhdnbd
@Idkikdhdnbd Месяц назад
it dosent work , can you help ? , this is my code : extends CanvasLayer const speel_speed = 2 @onready var textbox_container = $textbox_container @onready var lable = $textbox_container/MarginContainer/HBoxContainer/Label @onready var tween = create_tween() enum State { READY, READING, FINISHED } var current_state = State.READY var text_queue = [] func _ready(): $Timer.wait_time = speel_speed _hide_text_box() _queue_text("hello im lara") _queue_text("hello im lara2") _queue_text("hello im lara3") _queue_text("hello im lara4") pass func _process(delta): match current_state : State.READY : if !text_queue.is_empty() : _diplay_text() State.READING : if Input.is_action_just_pressed("move_up") : tween.stop() lable.visible_ratio = 1.0 _change_state(State.FINISHED) State.FINISHED : if Input.is_action_just_pressed("move_up") : _change_state(State.READY) _hide_text_box() func _queue_text(next_text): text_queue.push_back(next_text) pass func _hide_text_box(): lable.text = "" textbox_container.hide() func _show_text_box(): textbox_container.show() func _diplay_text(): var next_text = text_queue.pop_front() _change_state(State.READING) $Timer.start() lable.text = next_text _show_text_box() tween.tween_property(lable , "visible_ratio", 1.0, speel_speed) func _change_state(next_state): current_state = next_state match current_state : State.READY : pass State.READING : pass State.FINISHED : pass func _on_timer_timeout(): $Timer.stop() _change_state(State.FINISHED)
@ISamAtlas
@ISamAtlas Месяц назад
great tutorial, one thing is that it doesn't work in compatability mode, so i was wondering if you had alternatives? im participating in a game jam so i might have the answer tomorrow but its best not to coutn your eggs before they hatch, anwyays thank you, very cool and nice stuff youre doing for the community
@antonsimkin
@antonsimkin Месяц назад
how the hell did he make the original sprite transparent but children visible?
@jontopielski6227
@jontopielski6227 Месяц назад
You can set the original child's self modulate alpha value to 0 making it "invisible" but leaving the children visible
@antonsimkin
@antonsimkin Месяц назад
incredible
@omgitssome1
@omgitssome1 Месяц назад
amazing! thanks
@PesHap
@PesHap Месяц назад
This is outdated
@zoade5178
@zoade5178 Месяц назад
Thank you so much!
@Real_The_Goof
@Real_The_Goof Месяц назад
Can you apply such effects on levels themselves like in the backgrounds of 2D stages? Also, can it be done the other way? Like left to right waves?
@cholasimmons
@cholasimmons Месяц назад
gosh that was so easy and straight forward to watch!
@kunai9809
@kunai9809 Месяц назад
why is the shed straight in the editor but diagonal ingame?
@kunai9809
@kunai9809 Месяц назад
the foot step sound doesn't really fit to birds feet...
@ewee-st1de
@ewee-st1de 2 месяца назад
The whole stacked sprite thing is still wrecking my brain man, looks so good
@RuthlessMetalYT
@RuthlessMetalYT 2 месяца назад
didnt work for me. :S
@ScorpionDevYT
@ScorpionDevYT Месяц назад
Make sure that repeat is enabled, you will find this under texture
@ScarlettTheViewer
@ScarlettTheViewer 2 месяца назад
This is the most informative and concise video I have ever seen demonstrating specific gameplay with godot. I have spent (admittedly not a ton of time) probably 10 or so hours trying to learn, and hardly got anywhere with it. I know a good bit of python and was honestly considering just using pygame before seeing this. Thank you.
@Tcgtrainer
@Tcgtrainer 2 месяца назад
Wow men thanks for shearing I took a full course on programming to start doing games on Godot, I know the basics but never tough this could be done!, amazing.
@Yorwynn
@Yorwynn 2 месяца назад
Ich raff gar nix, lutsch bipfel
@maxismakingstuff
@maxismakingstuff 2 месяца назад
Great tutorial, very practical and got me started into shaders.
@tullman3craggs102
@tullman3craggs102 2 месяца назад
Simple things but very powerful! I didn't know most of these and the shaders look interesting
@turbomodus
@turbomodus 2 месяца назад
thanks for the great tutorial. Needed to adapt some things for Godot4, but in general it was very helpful to get the hardware cursor scale up on resolution change
@discordLC
@discordLC Месяц назад
Hey how did you do the var image = default_cursor.get_data() in Godot4?
@turbomodus
@turbomodus Месяц назад
@@discordLC var image = cursor.get_image()
@nitinsurendran8959
@nitinsurendran8959 Месяц назад
@@turbomodus Hey I'm kinda dumb how does export(Texture) work in godot 4
@turbomodus
@turbomodus Месяц назад
@@nitinsurendran8959 i believe you are talking about the changes for an export variable to change in the inspector? Thats @export var varName : Texture
@nitinsurendran8959
@nitinsurendran8959 Месяц назад
@@turbomodusI see, thanks alot :)
@jessnobotak6038
@jessnobotak6038 2 месяца назад
actually good tutorial. like cool.
@PortStingray
@PortStingray 2 месяца назад
Tysm, I was looking for a good size until i found viewpoint
@grunthos44
@grunthos44 2 месяца назад
Nice work, but just to address the elephant in the code.... Does anyone have a fix for the UV looping problem? Look at the middle 'T', it is out of sync with the rest, looks like the UV is wrapping from 0-1 halfway along?
@maxismakingstuff
@maxismakingstuff 2 месяца назад
I don't know how to fix it, but I think what's going on is that similar characters get placed at the same heights? So because T has already been drawn, the second T is the same height as the first T, same with O, A, and Y.
@ince55ant
@ince55ant 25 дней назад
use VERTEX.x instead of UV.x : VERTEX.y += wave_height * sin((wave_frequency * VERTEX.x) + (wave_speed * TIME)); also a way smaller number for frequency. basically 1/whatever it was before
@KartikNarayanan
@KartikNarayanan 2 месяца назад
thanks. this is exactly what I was looking for.
@localboy4350
@localboy4350 3 месяца назад
thx for buttom tips
@HitoriSanzo
@HitoriSanzo 3 месяца назад
didn't underrstand anything, 10/10, thanks bro
@javleds
@javleds 3 месяца назад
¡Gracias!
@The_Rising_Nova
@The_Rising_Nova 3 месяца назад
This is not the latest Godot version right ? Because some things appear to not be the same as in the video ^ ^ (thak you for making it tho)
@justarandomgamer5648
@justarandomgamer5648 3 месяца назад
could this be edited to have dialogue sounds too?
@owletstree9523
@owletstree9523 3 месяца назад
Omg I actually managed to re-create everything you did, even 2 years later(with some minor tweaks ofc). Thank you so much!
@Abel-fu1xq
@Abel-fu1xq 3 месяца назад
Hi, can you please let me know how you were able to create the line for the character attack: "set_health($Background/EnemyHealth/ProgressBar, current_enemy_health)" It gives me an error message saying: "Too few arguments for "set_health()" call. Expected at least 3 but received 2." Edit: Nevermind, I completely missed the next argument somehow lol
@Abel-fu1xq
@Abel-fu1xq 3 месяца назад
Hi, I got up to the point where he was defining the "func set_health(progress_bar, health, max_health):", but I got stuck on the line "progress_bar.get_node("Label").text = "HP: %d/&d" %[health, max_health]". The progress bar doesn't change at all. what should I do? Edit: Nevermind, I just had to chnage it to "HP: %s/&s" %[health, max_health]"
@TehWielder
@TehWielder 3 месяца назад
1:24 i typed the same thing but the scripting says no what is going on edit: hol up nvmnd i think it worked
@beccaosazediacrosse8209
@beccaosazediacrosse8209 3 месяца назад
I can't find the kinematic body option :(
@beccaosazediacrosse8209
@beccaosazediacrosse8209 3 месяца назад
Update this is because its been renamed as characterbody2D
@uidsea
@uidsea 3 месяца назад
It's now characterbody2D
@raphasaraiva5781
@raphasaraiva5781 3 месяца назад
Unfortunately, it no longer works today. It seems that Godot made some changes and discontinued some parameters used in the shader. Sad :(
@drbuni
@drbuni Месяц назад
It still works, but the code is a bit different. shader_type canvas_item; uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear; uniform vec4 darkest : source_color; uniform vec4 dark : source_color; uniform vec4 light : source_color; uniform vec4 lightest : source_color; void fragment(){ COLOR = texture(SCREEN_TEXTURE, SCREEN_UV); float rgb_avg = (COLOR.r + COLOR.g + COLOR.b) / 3.0; if (rgb_avg < .25) { COLOR = darkest; } else if (rgb_avg < .50) { COLOR = dark; } else if (rgb_avg < .75) { COLOR = light; } else { COLOR = lightest; } }
@coppertones7093
@coppertones7093 4 месяца назад
i'm surprised. i think i understood most of that
@raik1766
@raik1766 4 месяца назад
Heres my version of your script (gd 4): edit to add a signal because why not extends CanvasLayer signal dialogue_finished enum State { READY, READING, FINISHED } const CHAR_RATE = 0.075 @onready var label = $Container/TextContainer/Panel/Label @onready var bg = $Container/BG var tween: Tween var state: State func _ready(): _hide() state = State.READY func _process(delta): match state: State.READING: if Input.is_action_just_pressed("ui_select"): _finish() State.FINISHED: if Input.is_action_just_pressed("ui_select"): _hide() dialogue_finished.emit() state = State.READY func _hide(): label.text = "" label.visible_ratio = 0 bg.visible = false func _show(): bg.visible = true tween = create_tween() tween.finished.connect(_finish) func _finish(): tween.stop() label.visible_ratio = 1 state = State.FINISHED func _display_dialogue(lines): if state != State.READY: return label.text = lines _show() tween.tween_property(label,"visible_ratio",1,len(lines) * CHAR_RATE) state = State.READING
@hlo702
@hlo702 2 месяца назад
I was struggling to get the text to skip to the end on the newer version of Godot and this helps so thanks!
@rhos-gfx
@rhos-gfx 4 месяца назад
This is such a nice intermediate tutorial. no waffle or overexplaining, just "here's what i did". I'd love to see more like this.
@user-ti1ji9di6n
@user-ti1ji9di6n 4 месяца назад
Thanks man
@darycsan2082
@darycsan2082 4 месяца назад
WoUw, this is one of the best thing I have ever seen and learn. Thank you so much for this. ❣
@card_craft
@card_craft 4 месяца назад
Damn, just wasted multiple hours trying to import the texture through the shader with a ColorRect. Checks out