Esempio n. 1
0
    public Vector3 get_camera_rotation(camera_dir dir)
    {
        Vector3 vc = new Vector3(12, 0,0);
        switch (dir)
        {
            case camera_dir.front:
                {

                }
                break;
            case camera_dir.back:
                {
                    vc.y = 180;
                }
                break;
            case camera_dir.right:
                {
                    vc.y = 270;
                }
                break;
            case camera_dir.left:
                {
                    vc.y = 90;
                }
                break;
        }
        return vc;

    }
Esempio n. 2
0
    void camera_move_update()
    {        
        if(_want_camera_dir != want_move_dir.no)
        {
            int current = (int)_camera_dir;
            switch(_want_camera_dir)
            {
                case want_move_dir.left:
                    {
                        current -= 1;
                    }
                    break;
                case want_move_dir.right:
                    {
                        current += 1;
                    }
                    break;
            }

            int special_temp = 0;
            if (current < 0)
            {
                current = 3;
                special_temp = 1;
            }
            else if (current >= 4)
            {
                current = 0;
                special_temp = 2;
            }
            special_temp = 0;
            Vector3 current_pos = get_camera_pos(_camera_dir);
            Vector3 map_current_pos = get_map_camera_pos(_camera_dir);
            Vector3 current_rotation = get_camera_rotation(_camera_dir);
            Vector3 target_pos = get_camera_pos((camera_dir)current);
            Vector3 map_target_pos = get_map_camera_pos((camera_dir)current);
            Vector3 target_rotetion = get_camera_rotation((camera_dir)current);
            Vector3 current_camera_pos = new Vector3();
            Vector3 map_current_camera_pos = new Vector3();
            Vector3 current_camera_roation = new Vector3();
            int need_count = 20;
            _move_count += 1;
            current_camera_pos.x = current_pos.x + ((target_pos.x - current_pos.x) / need_count * _move_count);
            current_camera_pos.y = current_pos.y + ((target_pos.y - current_pos.y) / need_count * _move_count);
            current_camera_pos.z = current_pos.z + ((target_pos.z - current_pos.z) / need_count * _move_count);

            map_current_camera_pos.x = map_current_pos.x + ((map_target_pos.x - map_current_pos.x) / need_count * _move_count);
            map_current_camera_pos.y = map_current_pos.y + ((map_target_pos.y - map_current_pos.y) / need_count * _move_count);
            map_current_camera_pos.z = map_current_pos.z + ((map_target_pos.z - map_current_pos.z) / need_count * _move_count);

            current_camera_roation.x = current_rotation.x + ((target_rotetion.x - current_rotation.x) / need_count * _move_count);
            if (special_temp == 0)
            {
                float temp_f = target_rotetion.y - current_rotation.y;
                if(temp_f > 93)
                {
                    temp_f = -90;
                }
                else if(temp_f < -93)
                {
                    temp_f = 90;
                }
                current_camera_roation.y = current_rotation.y + ((temp_f) / need_count * _move_count);
            }                        
            current_camera_roation.z = current_rotation.z + ((target_rotetion.z - current_rotation.z) / need_count * _move_count);
            Camera.main.transform.position = current_camera_pos;
            Camera.main.transform.eulerAngles = current_camera_roation;
            global_instance.Instance._ngui_edit_manager._camera_map.transform.position = map_current_camera_pos;
            global_instance.Instance._ngui_edit_manager._camera_map.transform.eulerAngles = current_camera_roation;
            if (_move_count == need_count)
            {
                _want_camera_dir = want_move_dir.no;
                _move_count = 0;
                _camera_dir = (camera_dir)current;
            }
        }

    }
Esempio n. 3
0
    public Vector3 get_camera_pos(camera_dir dir)
    {       
        Vector3 vc = _creature.get_position();

        vc.y += 1.21f;
        switch (dir)
        {
            case camera_dir.front:
                {
                    vc.z -= 4.48f;
                    vc.x -= 0.5f;
                }
                break;
            case camera_dir.back:
                {
                    vc.z += 4.48f;
                    vc.x += 0.5f;
                }
                break;
            case camera_dir.right:
                {
                    vc.x += 4.48f;
                    vc.z -= 0.5f;
                }
                break;
            case camera_dir.left:
                {
                    vc.x -= 4.48f;
                }
                break;
        }
        return vc;
    }
Esempio n. 4
0
    public void create_map()
    {
        create_enclosure();
        MapData map_data = global_instance.Instance.GetMapData();
        if(map_data != null)
        {
            for (int i = 0; i < map_data.width_; i++)
            {
                for (int j = 0; j < map_data.height_; j++)
                {
                    int group = map_data.groups_[i, j];
                    if (group != 11)
                    {
                        int temp_x = (_max_x - map_data.width_) / 2 + i;
                        int temp_y = /*(_max_y - map_data.height_)+ */j + 20;
                        crash_mole mole_entry = global_instance.Instance._crash_manager.get_crash_mole_addr(temp_x, 9, temp_y)._crash_mole;
                        if (mole_entry == null)
                        {
                            crash_base_obj obj = null;
                            if (group != 10)
                            {
                                obj = global_instance.Instance._crash_manager.create_crash_obj(temp_x, temp_y);
                            }
                            else
                            {
                                obj = global_instance.Instance._crash_manager.create_flag_obj(temp_x, temp_y);
                            }

                            mole_entry = global_instance.Instance._crash_manager.create_crash_mole();
                            mole_entry.add_crash_obj(obj);
                            mole_entry._color_group = group;
                            global_instance.Instance._crash_manager.add_crash_mole(mole_entry);
                            create_mole(i, j, mole_entry);
                        }
                    }
                }
            }
        }

        for (int x = 0; x < (int)_max_x; x++)
        {
            for (int z = 0; z < (int)_max_z; z++)
            {
                for (int y = 0; y < (int)_max_y; y++)
                {
                    if (_crash_objs[x, z, y]._crash_obj != null)
                    {
                        crash_base_obj entry = _crash_objs[x, z, y]._crash_obj;
                        switch(entry.get_obj_type())
                        {
                            case crash_obj_type.normal:
                                {
                                    GameObject obj_temp = Object.Instantiate<GameObject>(_source_crash_mole_obj);
                                    _Game_objs.Add(obj_temp);
                                    crash_obj crash_obj_temp = (crash_obj)entry;                                  
                                    crash_obj_temp._grid = obj_temp.GetComponent<crashmolegrid>();
                                    crash_obj_temp._grid.set_group(_crash_objs[x, z, y]._crash_obj._crash_mole._color_group);    
                                }
                                break;
                            case crash_obj_type.flag:
                                {
                                    GameObject obj_temp = Object.Instantiate<GameObject>(_source_flag_mole_obj);
                                    _Game_objs.Add(obj_temp);
                                    crash_obj_flag crash_temp = (crash_obj_flag)entry;
                                    crash_temp._flag = obj_temp.GetComponent<crash_flag>();                                
                                }
                                break;
                        }
                        float x_temp = x * _grid_distance;
                        float z_temp = z * _grid_distance;
                        float y_temp = y * _grid_distance;
                        entry.set_position(x_temp, y_temp, z_temp);
                    }                    
                }
            }
        }

        foreach (crash_mole entry in _crash_moles_list)
        {
            entry.update_side();
        }

        if(_creature == null)
        {
            GameObject obj_temp = Resources.Load<GameObject>("prefab/creature");
            GameObject obj_creature = Object.Instantiate<GameObject>(obj_temp);
            _creature = obj_creature.GetComponent<creature>();            
            _creature.set_creature_type(creature_type.creature_2);              
        }
        _camera_dir = camera_dir.front;
        _want_camera_dir = want_move_dir.no;
        _creature.gameObject.SetActive(true);
        _creature.set_position(22, 2, 3);

        _camera_dir = camera_dir.front;
        _want_camera_dir = want_move_dir.no;
        Camera.main.transform.position = get_camera_pos(_camera_dir);
        Camera.main.transform.eulerAngles = get_camera_rotation(_camera_dir);

        global_instance.Instance._ngui_edit_manager._camera_map.transform.position = get_map_camera_pos(_camera_dir);
        global_instance.Instance._ngui_edit_manager._camera_map.transform.eulerAngles = get_camera_rotation(_camera_dir);

        for (int i = 0 ;i < 4; i ++)
        {
            _dir_btn_down[i] = false;
        }

        next_update();
    }