首页 > 其他分享 >LayaAir3.x 设置2d刚体线性速度,在不同设备(分辨率)下,表现不一致的问题

LayaAir3.x 设置2d刚体线性速度,在不同设备(分辨率)下,表现不一致的问题

时间:2024-08-01 19:17:39浏览次数:11  
标签:pixelRatio Laya 2d ._ LayaAir3 刚体 speed Math Browser

private _body: Laya.RigidBody;
private _speed: number = 20;

let radian = this.owner.rotation * Math.PI / 180;
// 注意:需要除以 Laya.Browser.pixelRatio
let v = new Laya.Vector2(Math.cos(radian) * this._speed / Laya.Browser.pixelRatio, 
                         Math.sin(radian) * this._speed / Laya.Browser.pixelRatio);
this._body.setVelocity(v);

根据源码:src/layaAir/laya/physics/factory/physics2DwasmFactory.ts

// physics2DwasmFactory.ts

 /**
  * @en Create the Box2D world.
  * @zh 创建Box2D世界。
  */
start() {
    this._PIXEL_RATIO = Physics2DOption.pixelRatio * Browser.pixelRatio;
    //...
}

由于其在使用像素到米单位时使用了 Browser.pixelRatio (设备像素比),这会导致直接设置线性速度,会在不同的设备像素比时表现不一致

标签:pixelRatio,Laya,2d,._,LayaAir3,刚体,speed,Math,Browser
From: https://www.cnblogs.com/kingBook/p/18337316

相关文章

  • 【Unity UI】Ultimate Clean GUI Pack: 打造专业级2D界面的终极工具包
    在Unity游戏开发中,用户界面(UI)是玩家体验的重要组成部分。一个美观、直观且响应迅速的UI能够极大地提升玩家的游戏体验。"UltimateCleanGUIPack"是一个专为Unity设计的2DGUI资源包,提供了一整套现代化且风格统一的界面元素,帮助你快速打造出专业级别的用户界面。一、资源......
  • test 2D渲染器 WebGL WebGL2
    1import{Box,Matrix3,Vector2}from'./Utils.js';2import{Shape,ShapeUtils,SplineCurve}from'./TwoUtils.js';34constBlendEquationAdd=[0,-1];56constBlendDefault=[6,7,-1,-1],7BlendAdd=......
  • unity2D游戏开发16弹弓动画
    清理动画器选中PlayerObject,打开Animator,删除原来的四个状态右键选择CreateState|fromNewBlendTree;冲命名为WalkTree双击WalkTree查看BlendTreeGraph设置属性为2DSimpleDirectional,再点击加号选择AddMotionField添加四个,如图点击BaseLayer......
  • vue项目引入live2d保姆级教程--web端、多种方法
    一、自建live2d运行1、选择SDK——live2d Cubism SDK (1)链接:Live2DCubismSDK|Live2DCubism     打开网站,它长这样:(2)选择web,到下个页面(3)下载勾选同意,填写邮箱,点击下载,得到一个压缩包注意:如果你需要完整的的SDK按上文来就行,实际这篇文章主要用到内容是c......
  • unity2D游戏开发11游戏背包开发
    背包存放游戏物品的地方在Hiearchy右键UI|Canvas,删除EventSystem,将Canvas重命名为InventoryObject设置属性右键InventoryObject,选择CreateEmpty,重命名为InventoryBackgroun,添加HorizontalLayoutGroup,HorizntalLayoutGroup将自动排列所有子对象,使他们水平......
  • 一个贝塞尔曲线编辑工具(2d)
    曲线在unity下如何绘制?类似绘制圆,是用一段一段的线段拼接来模拟的,这边也是类似,可以用一段一段的线段来模拟曲线。 既然要模拟,那我们也得知道贝塞尔曲线的公式才行。一般用的比较多的就是3次贝塞尔曲线,该曲线由起点p1,p1的控制点c1,终点p2,p2的控制点c2组成。公式为:p=p1*(1-t......
  • CF292D 题解
    \(O(mk\alpha(n))\)暴力,考虑对于每个询问\(l,r\),枚举\(1\siml-1,r+1\simm\),并查集连边即可。1154ms。\(O(n(m+k\alpha(n)))\)我们发现枚举\(i\in[1,l),j\in(r,m]\)太慢了。考虑先预处理出并查集从\(1\)连边到编号为\(id\)的边的状态\(pre_{id}\),倒过来再处理出......
  • stable diffusion中的UNet2DConditionModel代码解读
    UNet2DConditionModel总体结构图片来自于https://zhuanlan.zhihu.com/p/635204519stablediffusion运行unet部分的代码。noise_pred=self.unet(sample=latent_model_input,#(2,4,64,64)生成的latenttimestep=t,#时刻tencoder_hidden_states=pro......
  • LayaAir3.x 物理2D碰撞事件
    const{regClass,property}=Laya;@regClass()exportclassPlayerBulletextendsLaya.Script{declareowner:Laya.Sprite;private_body:Laya.RigidBody;onAwake():void{this._body=this.owner.getComponent(Laya.RigidBody);......
  • 像素值与 2D NPS 的标准差 - NPS 的总和还是平均值?
    我正在尝试根据Python中的2DNPS估计空间域中像素值的SD。我希望需要NPS值的总和除以像素总数。然而,我只能通过平均值除以像素总数来达到正确的估计。任何人都可以指出我为什么会这样吗?请参阅下面的代码示例。“SUM:“importnumpyasnpfromscipy.ff......