예제 #1
0
    private void Hide_PopUp(Collision col)
    {
        hide = col.collider.GetComponent <Hide_Data>();
        Vector3 pos    = hide.HidePoint;
        Vector3 length = (pos - transform.position).normalized;

        if (hide.Cheak(length) && !GetHIDE_NOW())
        {
            pop = GetComponent <PopUp>();
            pop.SetText(" B:隠れる");//仮
            pop.Activate(120);
        }

        hide = null;
    }
예제 #2
0
    private const float LENGTHDECIDE = 1.13f; //隠れる動作中の移動の際、この値以下になった場合に次のケースに移行
    private bool Hide_Action()
    {
        switch (step)
        {
        //
        case STEP.HIDE_INIALIZE:

            state = STATE.HIDE_MOATION;
            step  = STEP.HIDE_PREPARATION;

            hide          = null;
            targetpos     = Vector3.zero;
            originalpos   = Vector3.zero;
            hide_movement = Vector3.zero;
            break;

        //目標座標等の取得
        case STEP.HIDE_PREPARATION:
        {
            Vector3    fwd = transform.TransformDirection(Vector3.forward);
            RaycastHit hit;


            if (Physics.Raycast(transform.position, fwd, out hit, 1))
            {
                if (hit.collider.tag == "Hide_Object")
                {
                    hide = hit.collider.GetComponent <Hide_Data>();

                    targetpos     = hide.HidePoint;
                    originalpos   = param.pos;
                    hide_movement = (targetpos - originalpos).normalized * 0.1f;
                    if (!hide.Cheak(hide_movement * 10))
                    {
                        step = STEP.HIDE_FINISH;


                        break;
                    }
                    HIDE_NOW   = true;
                    step       = STEP.HIDE_START;
                    Hide_Timer = 180;
                }
            }
            else
            {
                step = STEP.HIDE_FINISH;
            }
        }

        break;

        //扉明け
        case STEP.HIDE_START:
            hide.Open_or_Close();
            //  hide.Disable_Collider();
            transform.GetComponent <BoxCollider>().enabled = false;
            //param.pos=targetpos;
            step = STEP.HIDE_1;
            break;

        //隠れる
        case STEP.HIDE_1:
        {
            float length;
            length = (targetpos - param.pos).magnitude;
            //Debug.Log("length:" + length);
            if (length < LENGTHDECIDE || Hide_Timer < 0)
            {
                hide.Open_or_Close();
                // param.SetPos(targetpos);
                step = STEP.HIDE_NOW;
                transform.position.Set(targetpos.x, 1.1f, targetpos.z);        //後で直す
            }
            else
            {
                Hide_Timer--;
                param.movement = hide_movement * 3;
            }
        }
        break;

        //隠れている
        case STEP.HIDE_NOW:

            if (Input.GetButton("Botton_B") || Input.GetKeyDown(KeyCode.KeypadEnter))
            {
                step       = STEP.HIDE_2;
                Hide_Timer = 180;
            }
            break;

        //扉明け
        case STEP.HIDE_2:
            hide.Open_or_Close();
            step = STEP.HIDE_3;

            break;

        //移動
        case STEP.HIDE_3:
        {
            float length;
            length = (originalpos - param.pos).magnitude;
            //  if (length < LENGTHDECIDE)
            if (length < 0.5f || Hide_Timer < 0)
            {
                hide.Open_or_Close();
                param.SetPos(originalpos);
                step = STEP.HIDE_FINISH;
                transform.GetComponent <BoxCollider>().enabled = true;
            }
            else
            {
                Hide_Timer--;
                param.movement = -hide_movement * 3;
            }
        }

        break;

        //終了時処理
        case STEP.HIDE_FINISH:
            HIDE_NOW      = false;
            originalpos   = Vector3.zero;
            targetpos     = Vector3.zero;
            hide_movement = Vector3.zero;

            hide  = null;
            state = STATE.NORMAL;
            step  = STEP.NONE;

            break;

        default:
            step = STEP.HIDE_INIALIZE;
            break;
        }
        return(false);
    }