godot 4 实现代码动态设置纹理素材,动态添加人物动画并加入全局动画集,实现人物多动作8方向动画【素材来源网络,仅供学习参考,请勿商用】

编程入门 行业动态 更新时间:2024-10-26 07:40:23

godot 4 实现代码动态设置纹理<a href=https://www.elefans.com/category/jswz/34/1769407.html style=素材,动态添加人物动画并加入全局动画集,实现人物多动作8方向动画【素材来源网络,仅供学习参考,请勿商用】"/>

godot 4 实现代码动态设置纹理素材,动态添加人物动画并加入全局动画集,实现人物多动作8方向动画【素材来源网络,仅供学习参考,请勿商用】

godot 4 实现代码动态设置纹理素材,动态添加人物动画并加入全局动画集,实现人物多动作8方向动画

  1. 素材如下:

站立素材:

跑动素材:

  1. 工程项目如下:
    3.实现代码如下:
extends Node2D# 素材载体
@onready var body : Sprite2D = $body
# 动画播放器
@onready var player : AnimationPlayer = $playerfunc _ready():# 角色名称var character_model_name = "巫蛮儿"# 人物跑动动画名称开头var run = "跑动"# 人物跑动素材大小var run_texture_size = Vector2(1432,1096) var run_sprite_size = Vector2(179,137)# 人物站立动画名称开头var stand = "站立"# 人物站立素材大小var stand_texture_size =  Vector2(1200,1152)var stand_sprite_size = Vector2(120,144)# 人物坐标self.position = Vector2(100,100)# 添加跑动素材的全部动画add_animations(character_model_name, run, run_texture_size, run_sprite_size)# 添加站立素材的全部动画add_animations(character_model_name, stand, stand_texture_size, stand_sprite_size)func _physics_process(_delta):player.play("巫蛮儿/跑动_4")# 添加某个类型全部动画 
# character_model_name  角色模型
# texture_name          纹理素材名称
# texture_size          纹理素材大小
# sprite_size           纹理素材中每个精灵的大小
func add_animations(character_model_name, texture_name, texture_size, sprite_size):# 素材路径拼接var full_texture_path = "res://素材/人物/" + character_model_name + "/" + texture_name + ".png"# 加载素材var full_texture = load(full_texture_path)# 获取素材的列数var num_columns = int(texture_size.x / sprite_size.x)# 获取素材的行数var num_rows = int(texture_size.y / sprite_size.y)# 获取角色动画库var animation_library : AnimationLibrary # 如果角色动画库不存在,则新建角色动画库if !player.has_animation_library(character_model_name):animation_library = AnimationLibrary.new()player.add_animation_library(character_model_name, animation_library)	else:animation_library = player.get_animation_library(character_model_name)	# 设置素材body.texture = full_texture# 设置素材动画行数和列数body.hframes = num_columnsbody.vframes = num_rows# 遍历逐行,每个动画一行for x in range(num_rows):# 创建动画var anim = Animation.new()# 清空动画anim.clear()# 设置动画循环播放anim.loop = true# 新建属性轨道var	track = anim.add_track(Animation.TYPE_VALUE)# 添加body:frame_coords轨道anim.track_set_path(track, "body:frame_coords")# 设置更新方式为关键帧anim.value_track_set_update_mode(track, Animation.UPDATE_DISCRETE)# 定义动画的帧时间var frame_time : float# 遍历素材一行的每个元素for y in range(num_columns):# 动画插入关键帧属性,关键帧是frame_coords属性坐标anim.track_insert_key(track, frame_time, Vector2(y, x))# 每个0.1秒插入一个关键帧,放在插入后是因为关键帧从0秒开始插入frame_time = frame_time + 0.1# 设置动画长度	anim.set_length(frame_time)# player全局动画库循环加入动画animation_library.add_animation(texture_name + "_" + String.num(x), anim)
  1. 理解:
    动态添加的属性

    轨道属性:
  2. 运行视频

godot 4 实现代码动态设置纹理素材,动态添加人物动画并

更多推荐

godot 4 实现代码动态设置纹理素材,动态添加人物动画并加入全局动画集,实现人物多动作8方向动画【素材来源网络,仅供学习参考,请勿商用】

本文发布于:2024-03-08 20:52:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722304.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:素材   人物   动画   动态   仅供

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!