public static bool EnemyTriggerCollisionCheck(int index) { Vector p1 = new Vector(PlayerStatus.playerPos.X, PlayerStatus.playerPos.Y); Vector size1 = new Vector(PlayerStatus.playerSize.X, PlayerStatus.playerSize.Y); Vector p2 = lstEnemyData[index].triggerAreaPos; Vector size2 = new Vector(lstEnemyData[index].triggerAreaOffset.X + lstEnemyData[index].triggerAreaSize.X * 32, lstEnemyData[index].triggerAreaSize.Y * 32); if (!lstEnemyData[index].direction) { if (CollisionCheck.Collision(p1, p2, size1, size2)) { return(true); } else { return(false); } } else { size2.X += lstEnemyData[index].size.X; if (CollisionCheck.Collision(p1, p2, size1, size2)) { return(true); } else { return(false); } } }
public static void PlayerItemGetting(Canvas canvas) { if (!flagDamaged) { for (int i = 0; i < Item.lstItemData.Count; i++) { Vector p1 = new Vector(Canvas.GetLeft(ImageData.imgPlayer), Canvas.GetTop(ImageData.imgPlayer)); Vector size1 = new Vector(playerSize.X, playerSize.Y); Vector p2 = new Vector(Canvas.GetLeft(Item.lstItemData[i].imgItem), Canvas.GetTop(Item.lstItemData[i].imgItem)); Vector size2 = new Vector(Item.lstItemData[i].size.X, Item.lstItemData[i].size.Y); if (CollisionCheck.Collision(p1, p2, size1, size2)) { if (!Sound.seStop) { Sound.SoundEffectSelector(SeName.Item_Get); Sound.SoundEffectPlayer(SeName.Item_Get); Sound.seStop = true; } ItemGetSelector(i); canvas.Children.Remove(Item.lstItemData[i].imgItem); Item.lstItemData.RemoveAt(i); break; } } } }
public static void CollisionPtoE() { if (!flagDamaged) { for (int i = 0; i < SpawnEnemy.lstEnemyData.Count; i++) { Vector p1 = new Vector(Canvas.GetLeft(ImageData.imgPlayer), Canvas.GetTop(ImageData.imgPlayer)); Vector size1 = new Vector(playerSize.X, playerSize.Y); Vector p2 = new Vector(Canvas.GetLeft(SpawnEnemy.lstEnemyData[i].imgEnemy), Canvas.GetTop(SpawnEnemy.lstEnemyData[i].imgEnemy)); Vector size2 = new Vector(SpawnEnemy.lstEnemyData[i].size.X, SpawnEnemy.lstEnemyData[i].size.Y); if (CollisionCheck.Collision(p1, p2, size1, size2)) { if (!Sound.seStop) { Sound.SoundEffectSelector(SeName.Player_Damage); Sound.SoundEffectPlayer(SeName.Player_Damage); Sound.seStop = true; } if (!isKnockBack) { //playerPos = new Vector(Canvas.GetLeft(ImageData.imgPlayer), Canvas.GetTop(ImageData.imgPlayer)); boundDirectionX = SystemOperator.FaceEachOther(playerPos.X, SpawnEnemy.lstEnemyData[i].position.X); knockBackTotalDis = new Vector(0, 0); knockBackBps = new Vector(0, 0); coefficient = 0; boundDirectionY = false; knockBackTargetDis = new Vector(64, 64); isKnockBack = true; } if (playerNowHp > 0) { playerNowHp -= SpawnEnemy.lstEnemyData[i].ofepower; ImageData.imgPlayer.Opacity = 0.6; } flagDamaged = true; damageInvincibleTotal = 0; Console.WriteLine("Break"); break; } } } }
public static void MainWeaponCollision(Canvas canvas) { for (int i = 0; i < lstMainWeaponCollider.Count; i++) { for (int j = 0; j < SpawnEnemy.lstEnemyData.Count; j++) { if (!SpawnEnemy.lstEnemyData[j].isDamage) { Vector p1 = new Vector(lstMainWeaponCollider[i].X, lstMainWeaponCollider[i].Y); Vector size1 = new Vector(32, 32); Vector p2 = new Vector(SpawnEnemy.lstEnemyData[j].position.X, SpawnEnemy.lstEnemyData[j].position.Y); Vector size2 = new Vector(SpawnEnemy.lstEnemyData[j].size.X, SpawnEnemy.lstEnemyData[j].size.Y); if (CollisionCheck.Collision(p1, p2, size1, size2) && SpawnEnemy.lstEnemyData[j].state != EnemyState.Death) { SpawnEnemy.lstEnemyData[j].isDamage = true; SpawnEnemy.lstEnemyData[j].totalInvincibleTime = 0; SpawnEnemy.lstEnemyData[j].coefficient = 0; SpawnEnemy.lstEnemyData[j].totalDistance = new Vector(0, 0); SpawnEnemy.lstEnemyData[j].bps = new Vector(0, 0); SpawnEnemy.lstEnemyData[j].targetDistance = new Vector(32, 32); SpawnEnemy.lstEnemyData[j].isKnockBack = true; if (!Sound.seStop) { Sound.SoundEffectSelector(SeName.Shock); Sound.SoundEffectPlayer(SeName.Shock); Sound.seStop = true; } SpawnEnemy.lstEnemyData[j].life -= 1; if (SpawnEnemy.lstEnemyData[j].life <= 0) { SpawnEnemy.lstEnemyData[j].isWaiting = false; SpawnEnemy.lstEnemyData[j].state = EnemyState.Death; SpawnEnemy.EnemyDeathItemDrop(canvas, SpawnEnemy.lstEnemyData[j].position); } } } } } }
public static void CollisionSubWeapon(Canvas canvas) { for (int i = 0; i < SpawnEnemy.lstEnemyData.Count; i++) { if (ImageData.imgSubWeapon.Count >= 1) { Vector p1 = new Vector(Canvas.GetLeft(ImageData.imgSubWeapon[0]), Canvas.GetTop(ImageData.imgSubWeapon[0])); Vector size1 = new Vector(32, 32); Vector p2 = new Vector(Canvas.GetLeft(SpawnEnemy.lstEnemyData[i].imgEnemy), Canvas.GetTop(SpawnEnemy.lstEnemyData[i].imgEnemy)); Vector size2 = new Vector(SpawnEnemy.lstEnemyData[i].size.X, SpawnEnemy.lstEnemyData[i].size.Y); if (CollisionCheck.Collision(p1, p2, size1, size2) && SpawnEnemy.lstEnemyData[i].state != EnemyState.Death) { canvas.Children.Remove(ImageData.imgSubWeapon[0]); ImageData.imgSubWeapon.Remove(ImageData.imgSubWeapon[0]); if (!Sound.seStop) { Sound.SoundEffectSelector(SeName.Fog); Sound.SoundEffectPlayer(SeName.Fog); Sound.seStop = true; } SpawnEnemy.lstEnemyData[i].life -= 1; if (SpawnEnemy.lstEnemyData[i].life <= 0) { SpawnEnemy.lstEnemyData[i].isWaiting = false; SpawnEnemy.lstEnemyData[i].state = EnemyState.Death; SpawnEnemy.EnemyDeathItemDrop(canvas, SpawnEnemy.lstEnemyData[i].position); } break; } } } }
public static void PlayerOverlappedWithObject() { for (int i = 0; i < lstObject.Count; i++) { Vector p1 = PlayerStatus.playerPos; Vector size1 = PlayerStatus.playerSize; Vector p2 = lstObject[i].position; Vector size2 = lstObject[i].size; if (CollisionCheck.Collision(p1, p2, size1, size2)) { if (lstObject[i].objectAttribute == ObjectAttribute.Ladder) { PlayerStatus.isLadder = true; } else { PlayerStatus.isLadder = false; } } } }