1
我想創建六個三角形在一起形成一個六邊形,然後旋轉它們。我成功地創建了一個切片六角形,我可以旋轉,但我希望每個切片分別行爲(例如,如果一個物體碰到一個切片,它的大小應該縮小,另一個應保持相同的大小)。以下是我的代碼在畫布上成功運行。有人可以幫助我繪製單獨的三角形,以便我可以根據需要修改它們。我打算讓三角形看起來更小或更大,使用「lineTo」來繪製它們所需的大小,然後填充它們。請讓我知道是否有另一種方法來實現這一點。非常感激。在javascript畫布上旋轉單個三角形
<script>
var numberOfSides = 6,
size = 100,
Xcenter = 0,
Ycenter = 0,
prevX,
prevY,
startPX,
startPY,
angle = 0.1,
angleChange=Math.PI/180;
ctx.beginPath();
ctx.moveTo (Xcenter + size * Math.cos(0), Ycenter + size * Math.sin(0));
startPX = Xcenter + size * Math.cos(0);
startPY = Ycenter + size * Math.sin(0);
requestAnimationFrame(animate);
function animate(time){
requestAnimationFrame(animate);
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.save();
// translate and rotate the canvas
ctx.translate(canvas.width/2,canvas.height/2);
ctx.rotate(angle);
for (var i = 1; i <= numberOfSides;i += 1) {
ctx.fillStyle = 'blue';
// ctx.fillStyle = get_random_color();
// addMessage(get_random_color());
// save the untranslated & unrotated context state
ctx.lineTo(Xcenter,Ycenter);
ctx.lineTo (Xcenter + size * Math.cos(i * 2 * Math.PI/numberOfSides), Ycenter + size * Math.sin(i * 2 * Math.PI/numberOfSides));
ctx.lineTo (startPX, startPY);
ctx.closePath();
ctx.fill();
// prevX = Xcenter + size * Math.cos(i * 2 * Math.PI/numberOfSides);
// prevY = Ycenter + size * Math.sin(i * 2 * Math.PI/numberOfSides);
startPX = Xcenter + size * Math.cos(i * 2 * Math.PI/numberOfSides);
startPY = Ycenter + size * Math.sin(i * 2 * Math.PI/numberOfSides);
ctx.moveTo(startPX,startPY);
ctx.beginPath();
}
// restore the context to its untranslated & unrotated state
ctx.restore();
angle+=angleChange;
}
ctx.closePath();
ctx.strokeStyle = "#ffffff";
ctx.lineWidth = 1;
ctx.stroke();
//}
</script>
非常感謝,工作就像一個魅力。如果你能幫助更多的事情,那將是非常好的,1)。在六邊形外線上碰撞檢測的方法。 2)如果多個玩家同時玩這個遊戲,每個玩家都會看到他自己在底部,而其他玩家則相對於這個位置。 –
@rajendersohi很高興知道我的回答很有幫助。關於其他問題:請爲StackOverflow上的每個問題創建另一個問題。 – gus27
當然,我會的。我可以在這裏發佈一個鏈接到我的其他問題嗎? –