protected override void Fire(Vector3 direction, float projectileSpeed = 40f) { MeshObject projectileMesh = PrimitiveMeshes.Octahedron(Position, 0.5f, Assets.projectile4Texture); Scene.AddGameObject(new EnemyProjectile(projectileMesh, direction, projectileSpeed, damage)); }
public IceMonster(Vector3 position, float health, float damage) : base(PrimitiveMeshes.Tetrahedron(position, 3f, Assets.iceMonsterTexture), health, damage) { rand = new Random(); }
public IceShotgunDude(Vector3 position, float health, float damage) : base(PrimitiveMeshes.Octahedron(position, 3f, Assets.iceShotgunDudeTexture), health, damage) { }
public bool Update(float deltaTime) { PlayerStats playerStats = game.PlayerStats; if (playerStats.dead) { return(false); } Scene scene = game.Scene; float sprintMultiplier = Controls.IsDown(Keybinds.sprint) ? 2.5f : 1f; Vector3 shift = Vector3.Zero; if (Controls.IsDown(Keybinds.forward)) { shift += 20f * deltaTime * scene.Camera.Forward * sprintMultiplier; } if (Controls.IsDown(Keybinds.backwards)) { shift -= 20f * deltaTime * scene.Camera.Forward; } if (Controls.IsDown(Keybinds.strafeRight)) { shift += 15f * deltaTime * scene.Camera.Right; } if (Controls.IsDown(Keybinds.strafeLeft)) { shift -= 15f * deltaTime * scene.Camera.Right; } float rotation = 0f; if (Controls.Scheme == ControlScheme.MouseKeyboard) { rotation += MathF.PI * 100f * deltaTime * Controls.MouseDelta(); } else { if (Controls.IsDown(Keybinds.turnLeft)) { rotation -= 0.5f * MathF.PI * deltaTime * sprintMultiplier; } if (Controls.IsDown(Keybinds.turnRight)) { rotation += 0.5f * MathF.PI * deltaTime * sprintMultiplier; } } Vector3 realShift = scene.SmoothMovement(scene.Camera.CameraPos, shift, PlayerStats.thickness); scene.Camera.CameraPos += realShift; scene.Camera.Rotation += rotation; int playerRoomX = (int)(scene.Camera.CameraPos.X / SceneGenerator.tileSize + SceneGenerator.size / 2f); int playerRoomY = (int)(scene.Camera.CameraPos.Z / SceneGenerator.tileSize + SceneGenerator.size / 2f); scene.Visited[playerRoomX, playerRoomY] = true; if (playerStats.tempHealth > 0f) { playerStats.tempHealth -= deltaTime * 0.2f; if (playerStats.tempHealth < 0f) { playerStats.tempHealth = 0f; } } if (playerStats.shootTime > 0f) { playerStats.shootTime -= deltaTime; } if (playerStats.hit) { playerStats.hitTime -= deltaTime; if (playerStats.hitTime < 0f) { playerStats.hitTime = 0f; playerStats.hit = false; } } playerStats.onFire = false; if (Controls.IsDown(Keybinds.fire) || (Controls.Scheme == ControlScheme.MouseKeyboard && Controls.IsLMBDown())) { if (playerStats.shootTime <= 0f) { playerStats.shootTime = 1f / (3f + playerStats.skillShootingSpeed * 0.5f); Assets.tsch.Play(); MeshObject projectileMesh = PrimitiveMeshes.Octahedron(scene.Camera.CameraPos + Vector3.Down, 0.4f, Assets.projectileTexture); scene.AddGameObject(new Projectile(projectileMesh, scene.Camera.Forward, 75f, 2f)); } } if (Controls.IsPressed(Keybinds.action)) { if (Vector3.Distance(scene.Camera.CameraPos, new Vector3(playerStats.exitPosition.X, 0f, playerStats.exitPosition.Y)) < 7f && 2 * playerStats.monsters >= playerStats.totalMonsters) { if (playerStats.monsters < playerStats.totalMonsters) { playerStats.fullClear = false; } foreach (Collectible.Type?collectible in scene.Collectibles) { if (collectible != null) { playerStats.fullClear = false; } } playerStats.floor++; Achievements.UnlockLeveled("Level", playerStats.floor, game.HUD); if (playerStats.fullClear) { Achievements.UnlockLeveled("100%", playerStats.floor - 1, game.HUD); } return(true); } else { foreach (GameObject gameObject in scene.gameObjects) { if (gameObject is Collectible collectible && Vector3.Distance(scene.Camera.CameraPos, collectible.Position) < 7f) { collectible.PickUp(playerStats); } } } } if (playerStats.skillPoints > 0 && Controls.IsPressed(Keybinds.skills)) { HUD.skillPointMenu = !HUD.skillPointMenu; } if (playerStats.skillPoints == 0) { HUD.skillPointMenu = false; } if (HUD.skillPointMenu) { if (Controls.IsPressed(Keybinds.skill1)) { playerStats.skillPoints--; playerStats.skillMaxHealth++; playerStats.maxHealth += 20f; playerStats.AddHealth(20f); Achievements.UnlockLeveled("HP", playerStats.skillMaxHealth, game.HUD); } else if (Controls.IsPressed(Keybinds.skill2)) { playerStats.skillPoints--; playerStats.skillMaxArmor++; playerStats.maxArmor += 20f; playerStats.AddArmor(20f); Achievements.UnlockLeveled("Armor", playerStats.skillMaxArmor, game.HUD); } else if (Controls.IsPressed(Keybinds.skill3) && playerStats.skillArmorProtection < 35) { playerStats.skillPoints--; playerStats.skillArmorProtection++; playerStats.armorProtection += 0.02f; Achievements.UnlockLeveled("AP", playerStats.skillArmorProtection, game.HUD); } else if (Controls.IsPressed(Keybinds.skill4)) { playerStats.skillPoints--; playerStats.skillShootingSpeed++; Achievements.UnlockLeveled("Speed", playerStats.skillShootingSpeed, game.HUD); } } return(false); }
public SpinnyBoi(Vector3 position, float health, float damage) : base(PrimitiveMeshes.TetraStar(position, 3f, Assets.spinnyBoiTexture), health, damage) { }
public BasicMonster(Vector3 position, float health, float damage) : base(PrimitiveMeshes.Tetrahedron(position, 3f, Assets.monsterTexture), health, damage) { }
public void drawHive() { GameObject worldController = GameObject.Find("WorldController"); Hive hive = worldController.GetComponent <WorldController>().World.Hive; GameObject roomContainer = new GameObject("Rooms"); roomContainer.transform.SetPositionAndRotation(new Vector3(0f, 0f, 0f), new Quaternion(0f, 0f, 0f, 0f)); float startX = -10; //-(hive.Width / 2); List <NavMeshSurface> surfaces = new List <NavMeshSurface>(); for (int x = 0; x < hive.Width; x++) { float startY = 10; //-(hive.Height / 2); for (int y = 0; y < hive.Height; y++) { Vector3 newPosition = new Vector3(startX, 0f, startY); //GameObject newRoom = new GameObject(hive.Rooms[x, y].ID); GameObject newRoom = GameObject.CreatePrimitive(PrimitiveType.Plane); newRoom.name = hive.Rooms[x, y].ID; newRoom.transform.SetParent(roomContainer.transform); newRoom.transform.SetPositionAndRotation(newPosition, new Quaternion(0f, 0f, 0f, 0f)); newRoom.GetComponent <MeshRenderer>().material.mainTexture = HiveBackground; newRoom.AddComponent <NavMeshSurface>(); surfaces.Add(newRoom.GetComponent <NavMeshSurface>()); if (x == 0) { GameObject lWall = GameObject.CreatePrimitive(PrimitiveType.Cube); lWall.name = hive.Rooms[x, y].ID + "_LeftWall"; lWall.transform.SetParent(newRoom.transform); lWall.transform.localScale = new Vector3(1, 2, 10); lWall.transform.localPosition = new Vector3(-5, 1, 0); lWall.GetComponent <MeshRenderer>().material = HiveWall; } if (x < hive.Width - 1) { GameObject rDoorTop = GameObject.CreatePrimitive(PrimitiveType.Cube); rDoorTop.name = hive.Rooms[x, y].ID + "_RightDoorTop"; rDoorTop.transform.SetParent(newRoom.transform); rDoorTop.transform.localScale = new Vector3(1, 2, 4); rDoorTop.transform.localPosition = new Vector3(5, 1, 3); rDoorTop.GetComponent <MeshRenderer>().material = HiveWall; GameObject rDoorBottom = GameObject.CreatePrimitive(PrimitiveType.Cube); rDoorBottom.name = hive.Rooms[x, y].ID + "_RightDoorBottom"; rDoorBottom.transform.SetParent(newRoom.transform); rDoorBottom.transform.localScale = new Vector3(1, 2, 4); rDoorBottom.transform.localPosition = new Vector3(5, 1, -3); rDoorBottom.GetComponent <MeshRenderer>().material = HiveWall; } if (x == hive.Width - 1) { GameObject rWall = GameObject.CreatePrimitive(PrimitiveType.Cube); rWall.name = hive.Rooms[x, y].ID + "_RightWall"; rWall.transform.SetParent(newRoom.transform); rWall.transform.localScale = new Vector3(1, 2, 10); rWall.transform.localPosition = new Vector3(5, 1, 0); rWall.GetComponent <MeshRenderer>().material = HiveWall; } if (y == 0) { GameObject tWall = GameObject.CreatePrimitive(PrimitiveType.Cube); tWall.name = hive.Rooms[x, y].ID + "_TopWall"; tWall.transform.SetParent(newRoom.transform); tWall.transform.localScale = new Vector3(10, 2, 1); tWall.transform.localPosition = new Vector3(0, 1, 5); tWall.GetComponent <MeshRenderer>().material = HiveWall; } if (y < hive.Height - 1) { GameObject bDoorLeft = GameObject.CreatePrimitive(PrimitiveType.Cube); bDoorLeft.name = hive.Rooms[x, y].ID + "_BottomDoorLeft"; bDoorLeft.transform.SetParent(newRoom.transform); bDoorLeft.transform.localScale = new Vector3(4, 2, 1); bDoorLeft.transform.localPosition = new Vector3(-3, 1, -5); bDoorLeft.GetComponent <MeshRenderer>().material = HiveWall; GameObject bDoorRight = GameObject.CreatePrimitive(PrimitiveType.Cube); bDoorRight.name = hive.Rooms[x, y].ID + "_BottomDoorRight"; bDoorRight.transform.SetParent(newRoom.transform); bDoorRight.transform.localScale = new Vector3(4, 2, 1); bDoorRight.transform.localPosition = new Vector3(3, 1, -5); bDoorRight.GetComponent <MeshRenderer>().material = HiveWall; } if (y == hive.Height - 1) { GameObject bWall = GameObject.CreatePrimitive(PrimitiveType.Cube); bWall.name = hive.Rooms[x, y].ID + "_BottomWall"; bWall.transform.SetParent(newRoom.transform); bWall.transform.localScale = new Vector3(10, 2, 1); bWall.transform.localPosition = new Vector3(0, 1, -5); bWall.GetComponent <MeshRenderer>().material = HiveWall; } startY -= 10; } startX += 10; } foreach (NavMeshSurface surface in surfaces) { surface.BuildNavMesh(); } GameObject hexagonCell = new PrimitiveMeshes().NewHexagonPrimitive("newCell", HiveWall); hexagonCell.transform.SetPositionAndRotation(new Vector3(-30, 0, -15), new Quaternion(0f, 0f, 0f, 0f)); GameObject hexagonCell2 = new PrimitiveMeshes().NewHexagonPrimitive("newCell2", HiveWall); hexagonCell.transform.SetPositionAndRotation(new Vector3(-45, 0, -30), new Quaternion(0f, 0f, 0f, 0f)); }