我正在和一群朋友制作视频游戏。我试图让它与分屏一起工作,但我不知道如何阻止两个不同的屏幕重叠。我不知道我是否应该使用 createGraphics() 或以某种方式获取另一个画布。这将如何工作?
我的代码:
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/p5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/addons/p5.sound.min.js"></script>
<script src="snow.js"></script>
<script src="ice_cream.js"></script>
<script src="candy_cane_step.js"></script>
<script src="startingplatform.js"></script>
<script src="character1.js"></script>
<script src="candy_cane.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<meta charset="utf-8" />
</head>
<body>
<script src="sketch.js"></script>
</body>
</html>
sketch.js(这是真正重要的)
//noprotect
var translation;
var pos;
var test = [];
var t = 0;
var char2pos;
var translation2;
function moveCharacter() {
if (keyIsDown(UP_ARROW)) {
translation.add(0, 3);
pos.add(0, -3);
}
if (keyIsDown(DOWN_ARROW)) {
translation.add(0, -3);
pos.add(0, 3);
}
if (keyIsDown(LEFT_ARROW)) {
translation.add(2, 0);
pos.add(-2, 0);
}
if (keyIsDown(RIGHT_ARROW)) {
translation.add(-2, 0);
pos.add(2, 0);
}
if (keyIsDown(87)) {
translation2.add(0, 3);
char2pos.add(0, -3);
}
if (keyIsDown(65)) {
translation2.add(2, 0);
char2pos.add(-2, 0);
}
if (keyIsDown(83)) {
translation2.add(0, -3);
char2pos.add(0, 3);
}
if (keyIsDown(68)) {
translation2.add(-2, 0);
char2pos.add(2, 0);
}
}
function setup() {
createCanvas(800, 450);
angleMode(DEGREES);
rectMode(CENTER);
translation = createVector(200, 225);
translation2 = createVector(400);
pos = createVector(0, 0);
char2pos = createVector(0, 0);
for(var i = 0; i < 100; i ++) {
test[i] = new Snow();
}
}
function draw() {
background(220);
translate(translation);
rectMode(CENTER);
fill(255);
rect(0, 0, 8000, 4500);
starting_platform();
character();
translate(translation2);
starting_platform();
character2();
for(var i = 0; i < test.length; i ++) {
test[i].show();
test[i].move();
test[i].check();
}
test[0].wind_speed_return();
moveCharacter();
t+= 0.0005;
}
这是代码的其余部分,我只是在其中绘制东西 - 我删除了很多,所以没有太多,但想法是一样的
起始平台.js
function starting_platform() {
rectMode(CENTER);
fill(255, 198, 41);
//stroke(0);
for(var i = 0; i < 9; i ++) {
rect(i*30-120, 0, 29, 300, 15);
}
fill(224, 174, 36);
rectMode(CORNER);
for(var ij = 0; ij < 4; ij ++) {
rect(-165, -120 + (ij*60), 61, 29, 15, 0, 0, 15);
rect(-76, -120 + (ij*60), 32, 29);
rect(-16, -120 + (ij*60), 32, 29);
rect(44, -120 + (ij*60), 32, 29);
rect(104, -120 + (ij*60), 61, 29, 0, 15, 15, 0);
rect(-165, -90 + (ij*60), 31, 29, 15, 0, 0, 15);
rect(-106, -90 + (ij*60), 32, 29);
rect(-46, -90 + (ij*60), 32, 29);
rect(14, -90 + (ij*60), 32, 29);
rect(74, -90 + (ij*60), 32, 29);
rect(134, -90 + (ij*60), 31, 29, 0, 15, 15, 0);
}
}
character1.js
function character() {
stroke(200, 0, 0);
strokeWeight(3);
fill(255, 0, 0);
ellipse(pos.x, pos.y, 20, 20);
noStroke();
}
function character2() {
stroke(200, 0, 0);
strokeWeight(3);
fill(255, 0, 0);
ellipse(pos.x, pos.y, 20, 20);
noStroke();
}
如果有什么我忘记了(我确定有),一定要告诉我。感谢您的帮助!