当前位置: 首页 > news >正文

[Godot] C#人物移动抖动解决方案

在写一个2D平台跳跃的游戏代码发现,移动的时候会抖动卡顿的厉害,后来研究了一下抖动问题,有了几种解决方案


1.垂直同步和物理插值问题 

这是最常见的可能导致画面撕裂和抖动的原因,大家可以根据自己的需要调整项目设置,选择开启关闭垂直同步和物理插值,以及设置抖动修复的值


2.2D像素吸附

这个常见于2D像素游戏,大家可以设置 项目设置-渲染-2D ,开启像素吸附的选项来修复


3.坐标圆整(避免亚像素)

我们可以使用 Position = Position.Round(); 代码进行圆整(如果有需要的话),可以对其像素、处理坐标或者避免模糊


4.相机跟随抖动

这是我实际碰到的,因为我的人物移动逻辑写在了_PhysicsProcess函数内,而相机自带的Smooth平滑是写在Process函数里的,所以不一致导致了抖动,我们根据自己的需要,专门给相机写一个跟随代码,放在_PhysicsProcess函数即可

using Godot;
using System;public partial class Camera : Camera2D
{[Export] public float SmoothingSpeed;private CharacterBody2D PlayerTarget;public override void _Ready(){PlayerTarget = GetNode<CharacterBody2D>("../Player");    //获取同级的玩家节点}public override void _PhysicsProcess(double delta){Vector2 Target = PlayerTarget.GlobalPosition;GlobalPosition = GlobalPosition.Lerp(Target, (float)(SmoothingSpeed * delta));//这里我使用的是Lerp,如果数值太大跟不上,可以考虑使用MoveToward}
}

这是我的相机代码,大家可以根据自己的需要来修改


5.重力代码引起的抖动  

这个抖动的原因在于编写玩家重力代码的时候,没有加上地面判断,所以玩家在地面上移动的时候就会上下抖动,解决办法就是加上地面判断,在地面上就不触发重力代码

private void PlayerGravity(float delta)
{if (IsOnFloor()) return;    //判断是否在地面Velocity = new Vector2(Velocity.X, Velocity.Y + _gravity * delta);    //重力代码
}

6.动画Sprite锚点

这个抖动的原因在于Sprite2D 或 AnimatedSprite2D 的中心锚点不一致、帧之间图片大小不一致、或播放动画时存在偏移,会导致视觉上“闪烁”或“抖动”,解决方案就是保证尺寸一致,然后统一对齐锚点

相关文章:

  • 机器学习 | 通俗理解Q-Learning、Sarsa和Sarsa(λ)
  • Python----机器学习(逻辑回归与二分类问题)
  • Access Token 和 Refresh Token 的双令牌机制,维持登陆状态
  • 通道注意力机制|Channel Attention Neural Network
  • ESP8266/32作为AVR编程器(ISP programmer)的使用介绍
  • JVM:JVM与Java体系结构
  • 小白如何从0学习php
  • 一款轻量级的PHP地址发布页面源码
  • HarmonyOS-ArkUI V2状态-PersistenceV2:持久化存储UI状态
  • ubuntu启动 Google Chrome 时默认使用中文界面,设置一个永久的启动方式
  • 架构设计系列
  • 在Java使用rest Client操作ES
  • 软件设计模式
  • vue+vite 减缓首屏加载压力和性能优化
  • dea如何使用git
  • python程序打包——nuitka使用
  • 「数据可视化 D3系列」入门第三章:深入理解 Update-Enter-Exit 模式
  • Redis - 讲清楚集群模式(Redis Cluster)(上)
  • C++ 创龙UDP通讯demo
  • 如何在vue3项目中使用 AbortController取消axios请求
  • 重庆党政代表团在沪考察,陈吉宁龚正与袁家军胡衡华共商两地深化合作工作
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体
  • 商务部:中方愿同各国一道加强合作,促进跨境电商健康可持续发展
  • 老人刷老年卡乘车被要求站着?公交公司致歉:涉事司机停职
  • 机器人助力、入境游、演出引流:假期纳客千万人次城市有高招
  • IPO周报|节后首批3只新股本周申购,色谱设备龙头来了