matter.js - 如何在 Matter JS 中定义一个重的对象
问题描述
为了更好地解释我需要什么,想想一个坦克和一罐苏打水。不管那罐汽水的速度是多少,如果它被击中,坦克就不会移动。但是当对它施加力时,坦克应该能够移动。
已经在这里打开了一个带有更多详细信息的问题: https ://github.com/liabru/matter-js/issues/841
我还为我需要的东西做了一个例子。
var Engine = Matter.Engine,
Render = Matter.Render,
World = Matter.World,
Bodies = Matter.Bodies,
Body = Matter.Body;
var engine = Engine.create();
engine.positionIterations = 10;
engine.velocityIterations = 8;
var render = Render.create({
element: document.body,
engine: engine,
options: {
width: 800,
height: 400,
wireframes: false
}
});
engine.world.gravity.y = 0;
var topWall = Bodies.rectangle(400, 50, 720, 20, { isStatic: true });
var leftWall = Bodies.rectangle(50, 210, 20, 300, { isStatic: true });
var rightWall = Bodies.rectangle(750, 210, 20, 300, { isStatic: true });
var bottomWall = Bodies.rectangle(400, 350, 720, 20, { isStatic: true });
var ball = Bodies.circle(100, 200, 5, {
friction: 0.05,
frictionAir: 0.05,
density: 0.001,
restitution: 0.2
});
var bigBox = Matter.Bodies.rectangle(500, 200, 120, 120, {
inertia: Infinity,
frictionAir: 1,
friction: 1,
density: 0.1
});
World.add(engine.world, [topWall, leftWall, rightWall, bottomWall, ball, bigBox]);
Engine.run(engine);
Render.run(render);
// CMD + SHIFT + 7 to reload
$('.shoot').on('click', function () {
var speed = 0.02;
var angle = 0;
let vector = Matter.Vector.create(Math.cos(angle) * speed, Math.sin(angle) * speed);
Body.applyForce(ball, ball.position, vector);
});
解决方案
推荐阅读
- mysql - 表字段的同一列如何使用多个案例?
- jquery - jQuery使添加的元素可拖动并在动态添加后保存位置
- postgresql - jooq 在极少数情况下生成的 sql 不正确
- arduino - 从扫描仪获取原始指纹签名
- php - 分页限制和偏移子句中的值示例代码不起作用
- php - 数据表 - 用户不活动后请求的未知参数
- php - 无法以附加模式打开流或文件“/var/www/alphacommodate/storage/logs/laravel.log”:无法打开流:权限被拒绝
- vue.js - 如何获得 cubejs 的 query-builder 的validatedQuery?
- azure - 如何将 Azure 函数从 .netcore 3.x 更新到 .net 5.0
- json - Postgres:将json对象转换为键值对数组