CSS로 간단한 스프라이트 애니메이션 만들기
시연을 위해 Pixelapp을 사용하여 간단한 캐릭터 워킹 애니메이션을 만들고 4x1 프레임으로 가져왔습니다.
이 정적 스프라이트 시트를 이 애니메이션 스프라이트로 바꾸려면 몇 가지 까다로운 CSS 라인만 있으면 됩니다.
HTML
시작하려면
HTML
에 div
가 있는 상용구body
가 필요합니다. 우리는 div
에 character
의 클래스를 부여할 것입니다. 그 div
안에는 img
클래스의 스프라이트 시트character-spritesheet
가 있습니다.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sprite Animation</title>
</head>
<body>
<div class="character">
<img class="character-spritesheet" src="sample_sprite_sheet_large.png" alt="Character" />
</div>
</body>
</html>
이것이 HTML에 필요한 전부입니다!
CSS
애니메이션에 대한 움직임의 환영을 만들기 위해 스프라이트 시트의 각 프레임을 빠르게 연속적으로 순환하면서 한 번에 하나의 프레임만 보이게 해야 합니다.
이를 달성하기 위한 핵심은
.character-spritesheet
를 사용하여 transform: translate
에 키프레임 애니메이션을 생성하는 동시에 overflow: hidden
를 컨테이너 div
.character
에 적용하는 것입니다.transform: translate
를 이미지에 적용하면 이미지가 지정된 x 및 y축에서 자체적으로 이동합니다. 이미지가 0의 x 위치에서 시작하여 100% 가로질러 이동하기를 원하므로 다음과 같이 @keyframes
를 생성합니다.@keyframes moveSpritesheet {
from {
transform: translate(0px,0)
}
to {
transform: translate(-100%,0)
}
}
그런 다음 애니메이션을
.character-spritesheet
에 적용하고 이동하려는 속도, 프레임 수, 애니메이션 이동 시간을 설정합니다. .character-spritesheet {
animation: moveSpritesheet 1s steps(4) infinite;
}
애니메이션을 만드는 마지막 핵심 단계는 컨테이너
.character
div
의 높이와 너비를 애니메이션의 한 프레임 크기(이 경우 '320px')와 일치하도록 설정하고 overflow: hidden
를 설정하는 것입니다. . overflow
를 hidden
로 설정하는 것이 애니메이션 환상의 핵심입니다. div
의 너비와 높이를 넘어서는 요소의 일부를 숨기도록 div
에 지시합니다. 우리는 .character
div
의 크기를 애니메이션의 한 프레임과 동일하게 설정했기 때문에 애니메이션이 발생하면 다른 모든 프레임이 시야에서 숨겨지고 움직임의 환상을 만듭니다!.character {
width: 320px;
height: 320px;
overflow: hidden;
position: relative;
}
참조
piskelapp.com - 픽셀 아트 생성 도구
CSS @keyframes
CSS transform: translate
CSS position
동영상
이 과정을 훨씬 더 자세히 설명하는 훌륭한 YouTube 동영상이 있습니다. 순전히 HTML, CSS 및 JavaScript를 사용하는 게임 디자인에 관심이 있다면 시청할 가치가 있습니다.
전체 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sprite Animation</title>
</head>
<body>
<div class="character">
<img class="character-spritesheet" src="sample_sprite_sheet_large.png" alt="Character" />
</div>
<style>
.character {
width: 320px;
height: 320px;
overflow: hidden;
position: relative;
}
.character-spritesheet {
animation: moveSpritesheet 1s steps(4) infinite;
}
@keyframes moveSpritesheet {
from {
transform: translate(0px,0)
}
to {
transform: translate(-100%,0)
}
}
</style>
</body>
</html>
Reference
이 문제에 관하여(CSS로 간단한 스프라이트 애니메이션 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mcardona9015/create-a-simple-sprite-animation-with-css-35a0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)