1

これが私のコードです:

var canvas = document.getElementById("canvas")
var ctx = canvas.getContext("2d")

var w = canvas.width
var h = canvas.height

var player = {
x: w / 2,
y: h / 2,
r: 10,
vx: 0,
vy: 0,
speed: 5,
}

var keys = []


window.onkeydown = function(event) {keys[event.keyCode] = true}
window.onkeyup = function(event) {keys[event.keyCode] = false}

setInterval(update, 1000 / 60)
function update() {
if (keys[38] && player.vy > -player.speed) {
    player.vy--
}
if (keys[40] && player.vy < player.speed) {
    player.vy++
}
if (keys[37] && player.vx > -player.speed) {
    player.vx--
}
if (keys[39] && player.vx < player.speed) {
    player.vx++
}

player.vx *= 0.9
player.vy *= 0.9
player.x += player.vx
player.y += player.vy

ctx.clearRect(0,0,w,h)
ctx.beginPath()
ctx.arc(player.x, player.y, player.r, 0, Math.PI * 2, false)
ctx.fillStyle = "red"
ctx.fill()
}

http://jsfiddle.net/wfNse/

それで、私の質問は、境界の外に出たときに、プレーヤーを反対側に出させるにはどうすればよいですか? これは非常に簡単に実行できるので、もう 1 つ、プレーヤーの半分が範囲外にある場合、次のように両側で半分表示されるようにします。

(塗装で作ります)

4

1 に答える 1

0

あなたはこれを行うことができます :

// coordinates replaced in the board
player.x = (player.x+w)%w;
player.y = (player.y+h)%h;

// player position drawing
ctx.clearRect(0,0,w,h)
ctx.beginPath()
for (var i=-1; i<=1; i++) {
    for (var j=-1; j<=1; j++) {
        var x = player.x+i*w, y = player.y+j*h;
        if (x+player.r<0 || x-player.r>w || y+player.r<0 || y-player.r>h) continue;
        ctx.arc(x, y, player.r, 0, Math.PI * 2, false)    
    }
}    

デモンストレーション

于 2013-07-16T07:09:30.870 に答える