public float GetClosestSqrDist() { float bestDist = float.MaxValue; for (int i = 0; i < m_world.Entities.Count; i++) { float dist = (m_world.Entities[i].Position - m_ownEntity.Position).sqrMagnitude; if (dist < bestDist) { if (dist == 0) { continue; } bestDist = dist; m_closest = m_world.Entities[i]; } } m_ownImg.transform.SetPositionAndRotation(m_ownImg.transform.position, Quaternion.Euler(0, 0, GetAngle(m_closest.Position))); //= Quaternion.Euler(0, 0, GetAngle(m_closest.Position)); /* var recttr = m_ownImg.rectTransform; * recttr.localEulerAngles = new Vector3(0, 0, GetAngle(m_closest.Position));*/ //Debug.Log(m_ownImg.transform.rotation.z); return(bestDist); }
public SpawnPointGenerator(GridSystem gSystem, World2D world) { m_randomSpawnPoints = GetEmptyTiles(gSystem); Vector2 pos = GetWithoutOccupyRange(gSystem); GameObject o = new GameObject(); o.AddComponent <RaycastEntity>(); RaycastEntity entity = o.GetComponent <RaycastEntity>(); entity.Position = pos; entity.TextureId = 18; entity.tag = "Pickup"; world.Entities.Add(entity); GameObject o2 = new GameObject(); o2.AddComponent <RaycastEntity>(); Vector2 pos2 = GetAndOccupyPosRange(gSystem); RaycastEntity endPoint = o2.GetComponent <RaycastEntity>(); endPoint.Position = pos2; endPoint.TextureId = 17; endPoint.tag = "EndPoint"; world.Entities.Add(endPoint); //gSystem.SetOccupied((int)pos.x, (int)pos.y, TileType.item); for (int i = 0; i < 8; i++) { if (!SpawnPlayer(gSystem)) { return; } } }
void Update() { if (!IsOpened) { return; } if (loader.ShouldUpdate()) { return; } RaycastEntity oldent = null; foreach (var entity in world.Entities) { if (oldent != null) { Debug.DrawLine(entity.Position, oldent.Position, Color.red, 0.1f); } oldent = entity; } foreach (var entity in world.Entities) { if (oldent != null) { Debug.DrawLine(entity.Position, oldent.Position, Color.red, 0.1f); } oldent = entity; if (entity.Properties.Contains("ItemA")) { if ((entity.Position - entity.Position).sqrMagnitude < 50) { } } if (entity.IsPlayer) { //var player = (FPSPlayer)entity; //foreach (IntVector2 openDoor in openDoors) //{ // Vector2 opendoorf = new Vector2((float) openDoor.X, (float) openDoor.Y); // float sqrmag = (opendoorf - player.Position).sqrMagnitude; // if (sqrmag > 4 * 4) // { // a // } //} var tilecoords = generator.GetGridSystem.GetWithinRange(entity.Position, 2); foreach (IntVector2 tilecoord in tilecoords) { if (world.worldMap[tilecoord.Y, tilecoord.X] == (int)TileType.door) { world.worldMap[tilecoord.Y, tilecoord.X] = (int)TileType.nodoor; openDoors.Add(tilecoord); } } } } foreach (IntVector2 openDoor in openDoors) { Vector2 doorpos = new Vector2((float)openDoor.X, (float)openDoor.Y); if (!Arenearby(world.Entities.ToArray(), doorpos, 5)) { world.worldMap[openDoor.Y, openDoor.X] = (int)TileType.door; } } }
void Update() { for (int i = 0; i < Entities.Count; i++) { if (!Entities[i].IsPlayer) { if (Entities[i].tag == "EndPoint") { RaycastEntity endPoint = Entities[i]; for (int j = 0; j < Entities.Count; j++) { if (i == j) { continue; } if (Entities[j].IsPlayer && ((FPSPlayer)Entities[j]).pickup != null) { FPSPlayer player = ((FPSPlayer)Entities[j]); float dist = (endPoint.Position - Entities[j].Position).magnitude; if (dist < 1) { player.Score += 10; player.pickup.Position = spawnpointGenerator.GetWithoutOccupyRange(gridSystem); player.pickup.enabled = true; player.pickup = null; if (keyDeliveredSound) { audioSource.PlayOneShot(keyDeliveredSound); } } } } } else if (Entities[i].tag == "Pickup") { RaycastEntity pickup = Entities[i]; if (!pickup.enabled) { continue; } for (int j = 0; j < Entities.Count; j++) { if (j == i || !Entities[j].IsPlayer) { continue; } float dist = (pickup.Position - Entities[j].Position).magnitude; if (dist < 1) { pickup.enabled = false; ((FPSPlayer)Entities[j]).pickup = pickup; if (keyCollectedSound) { audioSource.PlayOneShot(keyCollectedSound); } } } } } } }