Прогулка с KorGE: Взаимодействие Спрайтов за 1 минуту
🎯 Новая серия коротких видео
**Прогулки с KorGE**
👉 Добавим взаимодействие спрайтов!
👉 Не забывайте подписаться на канал и поставить лайк =)
👉 Много разборов по программированию https://t.me/CodeEveryDayWithMe/
👉 Ссылка на сайт движка KorGE https://docs.korge.org/getting-started/
👉 Графику можно скачать: Sunny land https://ansimuz.itch.io/sunny-land-pixel-game-art
👉 Пример кода из видео
```
import korlibs.event.*
import korlibs.image.atlas.*
import korlibs.time.*
import korlibs.korge.*
import korlibs.korge.scene.*
import korlibs.korge.view.*
import korlibs.image.color.*
import korlibs.io.file.std.*
import korlibs.korge.animate.*
import korlibs.korge.input.*
import korlibs.korge.view.collision.*
import korlibs.math.geom.*
import kotlin.random.*
suspend fun main() = Korge(
title = "Code Every Day - Прогулки с KorGE - 3",
windowSize = Size(512, 512),
backgroundColor = Colors["#2b2b2b"]
) {
val sceneContainer = sceneContainer()
sceneContainer.changeTo { MyScene() }
}
class MyScene : Scene() {
override suspend fun SContainer.sceneMain() {
val atlas = resourcesVfs["atlas.json"]
.readAtlas()
val spriteEagle = displaySprite(
atlas = atlas,
name = SpriteNames.eagle
)
controlByKeys(spriteEagle)
controlDragAndDrop(spriteEagle)
val spriteCherry = displaySprite(
atlas = atlas,
name = SpriteNames.cherry
)
checkCollision(spriteEagle, spriteCherry)
}
}
private fun Container.checkCollision(
sprite1: Sprite,
sprite2: Sprite
) {
sprite1.onCollision { view -﹥
when (view.name) {
SpriteNames.cherry -﹥ {
removeChild(view)
}
}
}
}
private var debugText: Text? = null
private fun Container.debugLog(
message: String
) {
when (debugText) {
null -﹥ debugText = text(text = message)
else -﹥ debugText?.text = message
}
}
private fun Container.controlDragAndDrop(
sprite: Sprite
) {
sprite.draggableCloseable(
selector = sprite,
autoMove = true
) { draggableInfo -﹥
val x = draggableInfo.viewNextX
val y = draggableInfo.viewNextY
debugLog(
message = "Drag and Drop " +
"point = $x, $y"
)
}
}
private fun Container.controlByKeys(
sprite: Sprite
) {
val movingDiffs = 50f
val blockOnClick: (toX: Float, toY: Float) -﹥ Unit = { toX, toY -﹥
val animator = animator(parallel = false)
animator.moveTo(
view = sprite,
x = toX.toInt(),
y = toY.toInt()
)
}
keys {
down(Key.LEFT) {
val x = sprite.x.toFloat() - movingDiffs
val y = sprite.y.toFloat()
blockOnClick(x, y)
}
down(Key.RIGHT) {
val x = sprite.x.toFloat() + movingDiffs
val y = sprite.y.toFloat()
blockOnClick(x, y)
}
down(Key.UP) {
val x = sprite.x.toFloat()
val y = sprite.y.toFloat() - movingDiffs
blockOnClick(x, y)
}
down(Key.DOWN) {
val x = sprite.x.toFloat()
val y = sprite.y.toFloat() + movingDiffs
blockOnClick(x, y)
}
}
}
private fun Container.displaySprite(
atlas: Atlas,
name: String,
point: Point = getRandomPoint()
): Sprite {
val animation = atlas.getSpriteAnimation(
name
)
val sprite = sprite(animation)
sprite.position(point)
sprite.scaleXY = Scale(5)
sprite.name = name
sprite.playAnimationLooped(
spriteDisplayTime = TimeSpan(200.0)
)
return sprite
}
private fun getRandomPoint(): Point {
val x = Random.nextDouble(0.0, 500.0)
val y = Random.nextDouble(0.0, 500.0)
return Point(x, y)
}
object SpriteNames {
const val eagle = "eagle"
const val cherry = "cherry"
}
```
Видео Прогулка с KorGE: Взаимодействие Спрайтов за 1 минуту автора CodeEveryDay ?
Видео Прогулка с KorGE: Взаимодействие Спрайтов за 1 минуту автора CodeEveryDay ?
Показать
Похожие видео
August Prefab 3_T1_C1Программируем роборуку сжимать клешнюСоздаем побег в Roblox - Этап 4. Замедляем игрока при прохождении через балкиПрогулка с KorGE: Управление спрайтом с клавиатуры за 1 минуту02_Staircase ModelingСмартфон Motorola Edge 40 Neo - Обзор Смартфона Motorola Edge 40 8/256GB Eclipse Black.C6 Scifi Cargo Part 6iPad и iPad Pro: Эволюция Технологий с 2010 по 2024 год. Обзор планшета iPad. История AppleПрограммируем Побег: Сбор крестика и повышение здоровье игрокаУчим роборуку махать. Программируем в mBlock (Enjoy Robotics)#11 Восстановление после сбояПрограммируем телепортацию по кнопке за 1 минуту в RobloxПрограммируем поворот роборуки Arduino в mBlock (Enjoy Robotics)Прогулки с KorGE: Программируем летящего орлаПрограммируем плавное изменение размера персонажа в RobloxPioneer SX-205RDS1000009299.mp4Смартфон Snapdragon 8 gen 3 - Обзор топовых смартфонов 2024Программируем пушку для игрока в Roblox за минутуА ваши переписки НИКТО НЕ ЧИТАЕТ? Всё про безопасность и конфиденциальность в Telegram