Esempio n. 1
0
    //Update Event
    void Update()
    {
        bool[] controls = getControls();
        if (doorTimer != -2f)
        {
            doorTimer -= Time.time;
        }
        //Movement
        velocity.x = 0f;
        if (can_move)
        {
            //Jump
            if (controls[4])
            {
                if (doorTimer < 0 && doorTimer != -2f && !stop)
                {
                    transform.position = door.findDoor();
                    doorTimer          = -2f;
                    door = null;
                    stop = true;
                }
                else
                {
                    if (canJump)
                    {
                        jump_force = jump;
                        canJump    = false;
                    }
                }
            }

            //Move Left and Right
            if (controls[1])
            {
                //Left
                velocity.x = -spd;
            }
            else if (controls[3])
            {
                //Right
                velocity.x = spd;
            }
        }
    }
Esempio n. 2
0
    //Update
    protected override void step()
    {
        base.step();

        //Movement
        Vector2 velocity = Vector2.zero;

        if (zombie == true)
        {
            //Check for Player or Humans
            GameObject        player = GameObject.FindGameObjectWithTag("Player");
            List <GameObject> humans = new List <GameObject>(GameObject.FindGameObjectsWithTag("Human"));
            humans.Add(player);

            bool    near       = false;
            Vector2 near_pos   = Vector2.zero;
            Vector2 target_pos = Vector2.zero;

            for (int i = 0; i < humans.Count; i++)
            {
                if (Vector2.Distance(humans[i].transform.position, transform.position) <= aware_r)
                {
                    near     = true;
                    near_pos = humans[i].transform.position;
                    break;
                }
            }

            //Move towards Door or Humans
            if (near)
            {
                target_pos = near_pos;
            }
            else
            {
                if (!door_found)
                {
                    GameObject[]        doors    = GameObject.FindGameObjectsWithTag("Door");
                    List <DoorBehavior> up_doors = new List <DoorBehavior>();

                    for (int i = 0; i < doors.Length; i++)
                    {
                        if (level == LevelManager.instance.getLevelNum(doors[i].transform.position.y))
                        {
                            if (doors[i].GetComponent <DoorBehavior>().up)
                            {
                                up_doors.Add(doors[i].GetComponent <DoorBehavior>());
                            }
                        }
                    }

                    if (up_doors.Count > 0)
                    {
                        door_found = true;
                        door       = up_doors[Random.Range(0, up_doors.Count)];
                    }
                    else
                    {
                        target_pos = player.transform.position;
                    }
                }
                else
                {
                    target_pos = new Vector2(door.transform.position.x, door.transform.position.y);
                }
            }

            if (transform.position.x < target_pos.x)
            {
                velocity.x = spd;
            }
            else if (transform.position.x > target_pos.x)
            {
                velocity.x = -spd;
            }

            //Move Up Doors
            if (door_move)
            {
                transform.position = door.findDoor();
                level = LevelManager.instance.getLevelNum(transform.position.y);

                door_move  = false;
                door_found = false;
                door       = null;
            }
        }
        else
        {
        }

        transform.position = new Vector2(transform.position.x + velocity.x, LevelManager.instance.getLevelY(level));
    }