Exemple #1
0
    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;
            }
        }
    }
Exemple #4
0
    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);
                            }
                        }
                    }
                }
            }
        }
    }