【问题标题】:matter.js rectangle won't collidematter.js 矩形不会碰撞
【发布时间】:2018-03-22 14:48:31
【问题描述】:

我使用 matter.js 进行物理处理,使用 p5.js 进行渲染。当您单击画布时,我试图简单地创建框,然后当框到达画布的末端时,它会与地面发生碰撞,但地面不会检测到与框的碰撞。我假设问题是地面定位正确。

这是代码

// module aliases
var Engine = Matter.Engine,
    World = Matter.World,
    Bodies = Matter.Bodies;

var x = 0;

var engine;

let frame = document.getElementById('frames');

var ground;

var boxs = [];
function setup()
{
	//put setup code here
	createCanvas(640,480);

	engine = Engine.create();
	// run the engine
	Engine.run(engine);
	ground = Bodies.rectangle(0, height/2, width, 10);
	World.add(engine.world, ground);

}

function mousePressed()
{
	boxs.push(new Box(mouseX, mouseY, 20, 20) );

}

function draw()
{

  	 x = x + 1;
  	background(0);


	for (var i = 0; i < boxs.length; i++) {
		boxs[i].show();

	}


	
	

}

var Box = function(x, y , width, height){
	this.box = Bodies.rectangle(x, y, width, height);
	this.h = height;
	this.w = width;
	World.add(engine.world, this.box);

	this.show = function (){
					push();
					fill(255);
					let pos = this.box.position;
					let angle = this.box.angle;
					translate(pos.x, pos.y);
					rotate(angle);
					rect(0, 0, this.w, this.h);
					rectMode(CENTER);
					pop();
				}

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.12.0/matter.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>
<html>
	<head>
		<title>Ball Clash</title>
	</head>
	<body>
		<p id="frames"></p>
		<!-- <canvas id="myCanvas" height="480" width="640" style="border:1px solid black;"></canvas> -->
	</body>
	
	
	
</html>

【问题讨论】:

    标签: javascript game-physics p5.js matter.js


    【解决方案1】:

    你应该养成debugging your code的习惯。 (该教程适用于处理,但许多相同的想法适用于 P5.js。)

    我假设问题是地面定位正确。

    那你为什么不直接检查一下地面的位置呢?我没有看到你在画地的任何地方,你为什么不开始呢?

    或者您可以将此行添加到draw() 函数中:

    console.log(ground.position);
    

    无论哪种方式,您都会注意到地面正在下落,这是有道理的,因为它是一个矩形,就像其他正在下落的盒子一样。

    要解决您的问题,您需要弄清楚如何创建一个不会移动的固定框。我确信谷歌搜索“matter.js 固定矩形”会返回大量结果,或者您可以查阅他们的文档。

    【讨论】:

    • 谢谢伙计。这很明显,但由于某种原因我没有考虑过
    • @salemsaggaf 没问题。如有疑问,console.log() 是您最好的朋友! :p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多