I hereby claim:
- I am wolfgangsenff on github.
- I am wolfgangsenff (https://keybase.io/wolfgangsenff) on keybase.
- I have a public key ASAvwW-SmM6W-1E_SbwlAuHp0-FzFBjg3vBVmxZeKYOo1wo
To claim this, I am signing this object:
| # In your Enemy.gd script | |
| ... | |
| const KILL_EFFECT_SCENE = preload(...) | |
| func take_damage(amount: float) -> void: | |
| enemy_stats.hitpoints -= amount | |
| if enemy_stats.hitpoints <= 0: | |
| kill() | |
| extends Node | |
| # Make this a global singleton if you want | |
| func shake_horizontal(thing, strength: float) -> void: | |
| var orig_pos = thing.position | |
| var current_amount = 6 | |
| var shake_count = int(abs(current_amount)) | |
| for i in shake_count: # Tweak these values | |
| var tween = create_tween().tween_property(thing, "position", Vector2.RIGHT * pow(-1, i) * strength * current_amount, 0.01) | |
| await tween.finished |
| # meta-description: Classic movement for RPG or top-down games that do not apply gravity | |
| # meta-name: RPG movement | |
| # meta-default: true | |
| # meta-space-indent: 4 | |
| extends _BASE_ | |
| const SPEED = 450.0 | |
| const FRICTION = 1000.0 |
| ## For a beginner-friendly version of the following (more advanced users likely will get better use of the below, | |
| ## if you're just starting out...), see this new gist: | |
| ## https://gist.github.com/WolfgangSenff/0a9c1d800db42a9a9441b2d0288ed0fd | |
| This document represents the beginning of an upgrade or migration document for GDScript 2.0 and Godot 4.0. I'm focusing on 2D | |
| at the moment as I'm upgrading a 2D game, but will hopefully have more to add for 3D afterward. | |
| ## If you want more content like this, please help fund my cat's medical bills at https://ko-fi.com/kyleszklenski - thank you very much! On to the migration guide. |
| extends Area2D | |
| const FlightMagnitude = 20.0 | |
| const FlightFrequency = 5.0 | |
| const FlightSpeed = 8.0 | |
| var _current_flight_angle := 0.0 | |
| var _flying_left := 1 | |
| func _physics_process(delta : float) -> void: |
| extends Node2D | |
| func _ready() -> void: | |
| var file = File.new() | |
| var file_location = "user://cache_temp/icon.png" | |
| if not file.file_exists(file_location): | |
| var result = file.open(file_location, File.WRITE_READ) | |
| var buffer = preload("res://icon.png").get_data().get_data() | |
| file.store_buffer(buffer) | |
| file.close() |
| extends Camera2D | |
| export (NodePath) var target | |
| var target_return_enabled = true | |
| var target_return_rate = 0.02 | |
| var min_zoom = 0.5 | |
| var max_zoom = 2 | |
| var zoom_sensitivity = 10 | |
| var zoom_speed = 0.05 |
| extends Resource | |
| class_name FolderListResource | |
| export (String) onready var FolderPath setget set_folder_path | |
| export (String) var ResourceCategory | |
| var all_resources = [] | |
| func set_folder_path(value): | |
| FolderPath = value |
I hereby claim:
To claim this, I am signing this object:
| func _physics_process(delta): | |
| if Input.is_key_pressed(KEY_A): | |
| rotate_y(0.1) | |
| if $AnimPlayer.current_animation != "Walk-loop": | |
| $AnimPlayer.play("Walk-loop") | |
| elif ... |