如何在Phaser.P2.body中施加摩擦力? 在基于Air-Hockey移相器的游戏中。 如何从曲棍球台“关闭空气流动”?,
在此示例中: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');
这是一个非常好的和现实的例子,如果表是打开..但..如果表是关闭?? puc应该移动得更慢,并且应该有更短的停止。我想模仿那个。 想象黄色圆圈是空气球冰球,黑色背景是那些充气桌子之一。如何设置puc和桌子之间的摩擦力?
P2文档似乎有许多与碰撞和与身体边缘和材料接触有关的事情......但是如何模拟与“空气”的摩擦?或“水”,如果这个身体在游泳..或与冰球和桌子摩擦?
聚苯乙烯。试图在update()中降级P2.body.velocity.x和y会促进奇怪的重新路由行为。
答案 0 :(得分:7)
您正在寻找Phaser P2' damping
property,它会向物理机构引入阻力。
将它添加到您的身体中,冰球很快停止,好像空气已经关闭一样:
{{1}}
阻尼指定每秒速度损失的比例,有效值在{{1}}到{{1}}范围内。
使用阻尼更新了JSFiddle:http://jsfiddle.net/Lucgmptn/