Animation Creator Code
HoppersEcho
plain_text
3 years ago
2.9 kB
54
No Index
func setup_character_animations(character :OverworldCharacter) -> void:
for animation in CharacterAnimations[character.character_name]:
# Start with the first animation frame
var frame := 0
for direction in Globals.Directions:
print("Working on ", direction.capitalize())
# Determine animation name
var anim_name :String = animation + direction.capitalize()
# Define a new blank animation
var anim_to_add := Animation.new()
# Create the node properties track
var track_index:= anim_to_add.add_track(Animation.TYPE_VALUE)
# Define the first timestamp in the animation
var timestamp := 0.0
# Determine the number of vertical frames (rows) in the spritesheet
var rows := int(character.sprite.texture.get_height() / DEFAULT_CHARACTER_SPRITE_SIZE.y)
# Determine number of horizontal frames in the spritesheet
var columns := int(character.sprite.texture.get_width() / DEFAULT_CHARACTER_SPRITE_SIZE.x)
# Set the animation length in float seconds
anim_to_add.set_length(MOVEMENT_ANIMATION_LENGTH)
# Set the update mode to discrete
anim_to_add.value_track_set_update_mode(track_index, Animation.UPDATE_DISCRETE)
# Setting sprite h_frames
anim_to_add.track_set_path(track_index, "sprite:hframes")
anim_to_add.track_insert_key(track_index, timestamp, columns)
print("Key count for hframes: ", anim_to_add.track_get_key_count(track_index))
anim_to_add.track_set_path(track_index, "sprite:vframes")
anim_to_add.track_insert_key(track_index, timestamp, rows)
print("Key count for vframes: ", anim_to_add.track_get_key_count(track_index))
anim_to_add.track_set_path(track_index, "sprite:texture")
anim_to_add.track_insert_key(track_index, timestamp, CharacterAnimations[character.character_name][animation])
print("Key count for texture: ", anim_to_add.track_get_key_count(track_index))
# Set animation keyframes
anim_to_add.track_set_path(track_index, "sprite:frame")
print("Track_get_path: ", anim_to_add.track_get_path(track_index))
print("Initial key count for frames: ", anim_to_add.track_get_key_count(track_index))
for i in columns:
print("Attemping to add frame ", frame, " as a frame keyframe at ", timestamp, " in ", animation, " ", direction, ".")
anim_to_add.track_insert_key(track_index, timestamp, frame)
timestamp += 0.1
frame += 1
print("Final key count for frames: ", anim_to_add.track_get_key_count(track_index))
for keyframe in anim_to_add.track_get_key_count(track_index):
print(anim_to_add.track_get_key_value(track_index, keyframe))
print(character.character_name, " ", direction, " Animations: ", CharacterAnimations[character.character_name].keys())
print("Adding animation ", anim_name, " to ", character.character_name)
print("Animation: ", anim_to_add)
character.animPlayer.add_animation(anim_name, anim_to_add)Editor is loading...