如何在 Phaser P2 Body 中应用 "air" 摩擦力?
How to apply "air" friction in a Phaser P2 Body?
如何在 Phaser 中应用摩擦。P2.body?
在 Air-Hockey 基于移相器的游戏中。
如何 "turn-off the air-flow" 从曲棍球 table ?,
在这个例子中:http://jsfiddle.net/ywzmkso3/32/
// Initialize Phaser, and creates a 400x490px game
var game = new Phaser.Game(400, 400, Phaser.CANVAS, 'game_div');
var game_state = {};
// Creates a new 'main' state that wil contain the game
game_state.main = function() { };
game_state.main.prototype = {
preload: function() {
// Function called first to load all the assets
},
create: function() {
game.physics.startSystem(Phaser.Physics.P2JS);
game.physics.p2.restitution = 0.7;
//start drawing a circle
var graphics = game.add.graphics(0, 0);
graphics.beginFill(0xFF3300);
graphics.lineStyle(0);
graphics.beginFill(0xFFFF0B);
graphics.drawCircle(100, 100, 40);
graphics.endFill();
//creating an sprite from draw
var spriteCircle = game.add.sprite(100, 300, graphics.generateTexture());
// And destroy the original graphics object
graphics.destroy();
spriteCircle.anchor.set(0.5);
game.physics.p2.enable([ spriteCircle ], false);
spriteCircle.body.setCircle(20);// 20 radius
spriteCircle.body.mass = 1;
spriteCircle.body.debug = true;
//give some initial velocity
spriteCircle.body.velocity.x = 10000
spriteCircle.body.velocity.y = 19999
},
update: function() {
},
};
// Add and start the 'main' state to start the game
game.state.add('main', game_state.main);
game.state.start('main');
如果 table 打开,这是一个非常好的和现实的例子..但是..如果 table 关闭? puc 应该移动得更慢并且应该有更短的停留时间。我想模拟那个。
想象黄色圆圈是冰球,black-background 是充气的 table 之一。如何设置puc和table之间的摩擦力?
P2 文档似乎有很多与 body 和材质的边缘碰撞和接触相关的内容...但是如何模拟与 "air" 的摩擦?或者 "water" 如果这个 body 正在游泳..或者与冰球和 table?
的摩擦
Ps。试图在 update() 中降低 P2.body.velocity.x 和 y 会促进奇怪的重新路由行为。
您正在寻找 Phaser P2 的 damping
property,它将阻力引入物理 body。
将此添加到您的 body 中,冰球很快就会停下来,就好像空气已被关闭一样:
spriteCircle.body.damping = 0.9;
阻尼指定每秒损失的速度比例,有效值在 0
到 1
范围内。
更新了带阻尼的 JSFiddle:http://jsfiddle.net/Lucgmptn/
如何在 Phaser 中应用摩擦。P2.body? 在 Air-Hockey 基于移相器的游戏中。 如何 "turn-off the air-flow" 从曲棍球 table ?,
在这个例子中:http://jsfiddle.net/ywzmkso3/32/
// Initialize Phaser, and creates a 400x490px game
var game = new Phaser.Game(400, 400, Phaser.CANVAS, 'game_div');
var game_state = {};
// Creates a new 'main' state that wil contain the game
game_state.main = function() { };
game_state.main.prototype = {
preload: function() {
// Function called first to load all the assets
},
create: function() {
game.physics.startSystem(Phaser.Physics.P2JS);
game.physics.p2.restitution = 0.7;
//start drawing a circle
var graphics = game.add.graphics(0, 0);
graphics.beginFill(0xFF3300);
graphics.lineStyle(0);
graphics.beginFill(0xFFFF0B);
graphics.drawCircle(100, 100, 40);
graphics.endFill();
//creating an sprite from draw
var spriteCircle = game.add.sprite(100, 300, graphics.generateTexture());
// And destroy the original graphics object
graphics.destroy();
spriteCircle.anchor.set(0.5);
game.physics.p2.enable([ spriteCircle ], false);
spriteCircle.body.setCircle(20);// 20 radius
spriteCircle.body.mass = 1;
spriteCircle.body.debug = true;
//give some initial velocity
spriteCircle.body.velocity.x = 10000
spriteCircle.body.velocity.y = 19999
},
update: function() {
},
};
// Add and start the 'main' state to start the game
game.state.add('main', game_state.main);
game.state.start('main');
如果 table 打开,这是一个非常好的和现实的例子..但是..如果 table 关闭? puc 应该移动得更慢并且应该有更短的停留时间。我想模拟那个。 想象黄色圆圈是冰球,black-background 是充气的 table 之一。如何设置puc和table之间的摩擦力?
P2 文档似乎有很多与 body 和材质的边缘碰撞和接触相关的内容...但是如何模拟与 "air" 的摩擦?或者 "water" 如果这个 body 正在游泳..或者与冰球和 table?
的摩擦Ps。试图在 update() 中降低 P2.body.velocity.x 和 y 会促进奇怪的重新路由行为。
您正在寻找 Phaser P2 的 damping
property,它将阻力引入物理 body。
将此添加到您的 body 中,冰球很快就会停下来,就好像空气已被关闭一样:
spriteCircle.body.damping = 0.9;
阻尼指定每秒损失的速度比例,有效值在 0
到 1
范围内。
更新了带阻尼的 JSFiddle:http://jsfiddle.net/Lucgmptn/