Godot游戏练习01-第12节-添加武器动画,同步动画显示

今天来增加一点动画, 让游戏看起来更生动一些, 顺便学习处理动画在多人游戏中的同步展示

看看效果

实现思路

武器动画实现

在WeaponRoot与武器的Sprite2D中间再新增一个WeaponAnimaionRoot的Node2D中间节点, 动画将基于该节点属性制作, 而不直接作用于底层的Sprite2D, 方便以后更换武器时可以复用

新增AnimationPlayer节点, 并新建一个attack动画

在动画轨道中添加WeaponAnimaionRoot的scale与rotation属性, 动画时长0.15秒, 每0.05秒一个动画帧

  • scale: (1.0, 1.0) -> (0.7, 1.5) -> (1.2, 0.7) -> (1.0, 1.0)
  • rotation: (0.0, 0.0) -> (-15.0, 0.0) -> (0.0, 0.0)

让武器在攻击时有一点"弹一下"并且具有后坐力的感觉

动画播放与同步

动画的播放调用animation_player.play函数, 动画同步通过RPC, 由服务器同步到所有peer

gdscript 复制代码
func _try_to_attack() -> void:
	if not attack_timer.is_stopped():
		return
    # other codes ...
	_play_attack_effect.rpc()


@rpc("authority", "call_local", "unreliable")
func _play_attack_effect() -> void:
	if animation_player.is_playing():
		animation_player.stop()
	animation_player.play("attack")

rpc的三个参数含义:

  • authority: 仅服务端可调用, 这里服务端是Player节点的authority
  • call_local: 该函数可通过rpc在远端peer与本地peer上运行
  • unreliable: 允许RPC不可靠, 比如丢包, 这只是一个效果显示, 不重要
相关推荐
hkNaruto12 小时前
【游戏】低帧率策略游戏类帧同步保障公平性软件详细设计文档
网络·游戏
科技小登16 小时前
企业DDoS防护方案实战测试:高防CDN、高防IP与SDK游戏盾如何配置
tcp/ip·游戏·ddos
2501_9160074717 小时前
Flutter与游戏App加固避坑指南:如何为混合开发与高交互应用选对安全方案?
安全·flutter·游戏·ios·小程序·uni-app·iphone
五仁烧饼18 小时前
Unity性能优化系列内存篇 - 移动端内存优化
unity·性能优化·游戏引擎
只是甲18 小时前
《魔法学院救援记》游戏介绍
游戏·vibe coding·学习中游戏·游戏中学习·培养孩子学习兴趣
WiChP2 天前
【V0.1B15】从零开始的2D游戏引擎开发之路
游戏引擎
每周报刊4 天前
竞速座舱级视界:爱攻 AGP497UCZD 超宽 QDOLED 显示器解析
数据结构·游戏·计算机外设
zhchyun20084 天前
# 【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(06)
ui·unity·游戏引擎
X12499281814 天前
无畏契约更新后卡顿掉帧怎么办?黑屏闪退、游戏打不开解决方法
游戏
wind100324 天前
VC++ 运行库 vcredist 安装失败|CLR 80131522 报错完整修复
开发语言·c++·游戏