User prompt
пересечение пули и игрока засчитывается если радиус пули 10 пересек квадрат 100 на 100 игрока
User prompt
пересечение объектов самолета игрока и bullet в радиусе изображениям, а не объекта
Code edit (1 edits merged)
Please save this source code
User prompt
сделать проверку на пересечения пули радиусом 10 и самолета радиусом 45
User prompt
скорость пули 3
User prompt
сделать проверку на пересечения пули радиусом 10 и самолета радиусом 50
User prompt
сделать проверку пересечения изображения пули радиусом 10 и изображением игрока радиусом х =80 y = 30
User prompt
определить пересечение пули с игроком по маске игрока
Code edit (1 edits merged)
Please save this source code
User prompt
создать маску столкновения для самолета игрока
User prompt
пуля пересекает игрока не в размерах самолета, а в отображении картинки самолета
User prompt
настроить проверку пересечения пули и игрока: пересечение пули радиус = 10 и игрока радиус 100
User prompt
пересечение пули с игроком проверяется по радиусу x=150 y = 80
User prompt
пересечение пули и игрока проверяется пересечением изображения пули к игроку
User prompt
пересечение пули и игрока в в размере изображения, а не объекта
User prompt
если пуля касается игрока, то смерть
User prompt
пуля вылетает в случайном направлении и летит по прямой
Code edit (3 edits merged)
Please save this source code
User prompt
пуля вылетает в рандомном направлении от 0 до 90 градусов и летит ровно
User prompt
пуля летит рандомно от 0 до 90 градусов
User prompt
пуля не преследует игрока, а летит в по направлению своего движения
User prompt
пуля летит в направлении, где в данный момент находится игрок
User prompt
пуля летит в направление движения игрока
User prompt
пуля летит в игрока
User prompt
пуля появляется через 3 секунды, до этого момента она не отображается
===================================================================
--- original.js
+++ change.js
@@ -69,32 +69,8 @@
var planeGraphics = self.attachAsset('plane', {
anchorX: 0.5,
anchorY: 0.5
});
- // Define a collision mask for the plane based on its image shape
- self.collisionMask = {
- type: 'polygon',
- points: [{
- x: -80,
- y: -50
- },
- // Top left
- {
- x: 80,
- y: -50
- },
- // Top right
- {
- x: 90,
- y: 50
- },
- // Bottom right
- {
- x: -90,
- y: 20
- } // Bottom left
- ]
- };
self.speedX = 7;
self.speedY = 0;
// Update plane position
self.update = function () {
@@ -266,75 +242,22 @@
// Trigger game over
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
- // Check if the bullet touches the player using the collision mask
- if (bullet.visible && checkCollisionMask(bullet, plane1)) {
+ // Check if the bullet touches the player with precise radius-based detection
+ var bulletCenterX = bullet.x + bullet.width / 2;
+ var bulletCenterY = bullet.y + bullet.height / 2;
+ var planeCenterX = plane1.x + plane1.width / 2;
+ var planeCenterY = plane1.y + plane1.height / 2;
+ var dx = bulletCenterX - planeCenterX;
+ var dy = bulletCenterY - planeCenterY;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (bullet.visible && distance < 10 + Math.min(80, 30)) {
+ // Using smaller radius for precise detection
// Trigger game over
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
- // Function to check collision using masks
- function checkCollisionMask(bullet, plane) {
- // Assuming bullet is a circle for simplicity, and plane uses a polygon mask
- var bulletCenter = {
- x: bullet.x,
- y: bullet.y
- };
- var bulletRadius = bullet.width / 2; // Assuming width and height are equal for the bullet
- var vertices = plane.collisionMask.points.map(function (p) {
- return {
- x: plane.x + p.x,
- y: plane.y + p.y
- };
- });
- // Check if bullet's center is inside the polygon (plane's collision mask)
- if (isPointInPolygon(bulletCenter, vertices)) {
- return true;
- }
- // Check each edge of the polygon to see if it intersects with the bullet's circle
- for (var i = 0; i < vertices.length; i++) {
- var start = vertices[i];
- var end = vertices[(i + 1) % vertices.length];
- if (lineCircleIntersection(start, end, bulletCenter, bulletRadius)) {
- return true;
- }
- }
- return false;
- }
- // Function to check if a point is inside a polygon
- function isPointInPolygon(point, vertices) {
- var intersectCount = 0;
- for (var i = 0; i < vertices.length; i++) {
- var j = (i + 1) % vertices.length;
- if (vertices[i].y > point.y != vertices[j].y > point.y && point.x < (vertices[j].x - vertices[i].x) * (point.y - vertices[i].y) / (vertices[j].y - vertices[i].y) + vertices[i].x) {
- intersectCount++;
- }
- }
- return intersectCount % 2 == 1;
- }
- // Function to check if a line segment intersects a circle
- function lineCircleIntersection(start, end, center, radius) {
- var d = {
- x: end.x - start.x,
- y: end.y - start.y
- };
- var f = {
- x: start.x - center.x,
- y: start.y - center.y
- };
- var a = d.x * d.x + d.y * d.y;
- var b = 2 * (f.x * d.x + f.y * d.y);
- var c = f.x * f.x + f.y * f.y - radius * radius;
- var discriminant = b * b - 4 * a * c;
- if (discriminant < 0) {
- // No intersection
- return false;
- } else {
- // It's a line intersection check, not a segment check, but it's enough for demonstration
- return true;
- }
- }
// Check for collision between player and enemy planes
for (var i = 0; i < enemyPlanes.length; i++) {
if (plane1.x < enemyPlanes[i].x + 100 && plane1.x + 100 > enemyPlanes[i].x && plane1.y < enemyPlanes[i].y + 100 && plane1.y + 100 > enemyPlanes[i].y) {
// Add a red flash screen effect
снаряд от пушки. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
чистое голубое небо. задний фон. мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Артиллерийское оружие, смотрит вверх. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Нажатие по экрану. Палец. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.