왼쪽을 누르면 왼쪽으로 설정 한 이미지가 표시됩니다. RPG 게임을 만들고 있습니다. 스프라이트 시트를 사용하는 방법을 알 수 없으므로 각 이미지를 개별적으로로드하여 작업을 쉽게 처리했습니다.캔버스에서 키를 눌렀을 때 이미지가 변경되지 않을 수 있습니다.
는 여기에 지금까지이 작업은 다음과 같습니다
<script>
function initCanvas(){
var canvas = document.getElementById('my_canvas')
var ctx = canvas.getContext('2d');
//Variables
var cw = canvas.width;
var ch = canvas.height;
var x = 20;
var y = 20;
var width = 40;
var height = 40;
//----------------
//Char (Spritesheet soon)
//----------------
var charup = new Image();
charup.src = "up.png";
var chardown = new Image();
chardown.src = "down.png";
var charleft = new Image();
charleft.src = "left.png";
var charright = new Image();
charright.src = "right.png";
//
draw(); //Executes the Draw Function
//
//-------------
//WASD Controls
//-------------
document.addEventListener("keydown", move, false);
function move(event){
if(event.keyCode == 87){ //w
ctx.drawImage(charup, x, y, width, height);
if(y >= 20){
y-=20;
}
else if(y < 20){
y = 460;
}
}
if(event.keyCode == 65){ //a
ctx.drawImage(charleft, x, y, width, height);
if(x >= 20){
x-=20;
}
else if(x < 20){
x = 460;
}
}
if(event.keyCode == 83){ //s
ctx.drawImage(chardown, x, y, width, height);
if(y+height <= 490){
y+=20;
}
else if(y+height > 460){
y = 0;
}
}
if(event.keyCode == 68){ //d
ctx.drawImage(charright, x, y, width, height);
if(x+width <= 490){
x+=20;
}
else if(x+width > 490){
x = 0;
}
}
draw();
//Idea for sprite: If press right it goes right and loads a gif while going right...
//And when "keyup" or keyrelease or whatever, it stops the animation
//Or loads a neutral one facing the same direction.
}
//--------------
//Draw Function
//--------------
function draw(){
//Clears rect for animation purposes
ctx.clearRect(0, 0, cw, ch);
ctx.fillStyle = "green";
//ctx.fillRect(x, y, 20, 20);
ctx.drawImage(chardown, x, y, width, height);
}
}
//------------
//Game Loop
//------------
window.addEventListener('load', function(event){
initCanvas();
});
</script>
관련이없는,하지만 난 조금 루즈 - 같은 - 만들려고 해요 rpg-game-thing 또는 뭔가를 죽일 수있는 작은 RPG ... (또는 뭔가 ...) 그냥 기분이 밝아 지거나 어떻게 든 도움이 될 것이라고 생각했습니다. – Maddoga
일부 코드가 변경되었습니다. 나는 당신이 특정한 조화 속에 있는지를 본 후에 그 인물을 그리도록 만들었습니다 ... 어느 것이 든 그것을 그리기를 원하기 때문에 이것은 잘못된 것입니다. 여전히 작동하지 않지만 주 코드가 업데이트되었습니다. TLDR; 나는 한 줄 또는 2 줄을 움직 였지만 아무것도하지 않았다. – Maddoga
새로운 이미지 변수'var player = new Image()'를 만들고 소스를 빈'player.src = ""'에 넣어보십시오. 다음 작업은 W가 눌러 진 경우입니다 :'player.src = charup.src' 등 모든 버튼 누름에 대해서도 마찬가지입니다. 당신의 드로잉 기능에서 단순히 플레이어 이미지를 그려야합니다 :'ctx.drawImage (player, x, y, width, height); – Niddro