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; }
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); }