Open zbrongyaozb opened 1 month ago
To resolve the issue with Arcade.Body size when using ScaleModes.FIT, modify the create
method in your scene to call body.setSize
after adding the DOM element to the physics system. This ensures the body size is correctly set. Here is the updated code:
create () {
this.cursors = this.input.keyboard.createCursorKeys();
this.element = this.add.dom(300, 200, 'div', 'font-size: 96px', '💩').setOrigin(0);
this.physics.add.existing(this.element, false);
this.element.body.setCollideWorldBounds(true);
this.element.body.setSize(this.element.width, this.element.height); // Add this line
const element = this.add.dom(100, 100, 'div', 'font-size: 96px', '💩').setOrigin(0);
this.physics.add.existing(element, false);
element.body.setCollideWorldBounds(true).setSize(element.width, element.height);
}
This ensures the body size is correctly set when using ScaleModes.FIT.
/plugins/impact/components/BodyScale.js /src/scale /plugins/impact/components/SetGameObject.js /changelog/3.1/CHANGELOG-v3.1.md /changelog/3.15/CHANGELOG-v3.15.md /changelog/3.80/CHANGELOG-v3.80.md /changelog/3.60/ScaleManager.md /types/phaser.d.ts /changelog/3.70/CHANGELOG-v3.70.md /changelog/3.4/CHANGELOG-v3.4.md /changelog/3.2/CHANGELOG-v3.2.md /changelog/3.9/CHANGELOG-v3.9.md /changelog/3.17/CHANGELOG-v3.17.md /changelog/3.1.1/CHANGELOG-v3.1.1.md /changelog/3.1 /src/scale/const/CENTER_CONST.js /src/core/typedefs/ScaleConfig.js /changelog/3.23 /src/scale/events/RESIZE_EVENT.js /src/physics /changelog/3.60/ArcadePhysics.md /src/scale/const/SCALE_MODE_CONST.js /src/scale/events /src/physics/index.js /plugins/impact/components/BodyType.js
Version
Phaser Version: 3.80.1
Operating system: Windows 10
Browser: Edge , Chrome
Description
when use dom with physics, and Scale mode is Phaser.Scale.ScaleModes.FIT. the body size is not correct. The problem can be solved by manually calling body.setSize.![微信截图_20240723121016](https://github.com/user-attachments/assets/1d0956ea-3d97-40f3-873c-0e6ad13cdc8e)
Example Test Code
sandbox