//ジャンプパラメータをリセット private void JumpReset() { transform.position = move_end; transform.rotation = Quaternion.LookRotation(Vector3.Cross(m_Camera.right, jump_target.normal), jump_target.normal); switch (m_JumpMode) { case JumpMode.CapturingJump: { break; } case JumpMode.Bodyblow: { break; } case JumpMode.StringJump: { StringAllMinus(); m_Shooter.StringShoot(move_start, move_end); break; } default: { if (isEscape) { m_Shooter.StringShoot(m_Prediction.m_HitStringPoint, move_end); } else { m_Shooter.StringShoot(move_start, move_end); } break; } } waitFrame = 0; m_jumpableNum = -1; isEscape = false; isLanding = false; m_Prediction.m_HitStringPoint = Vector3.zero; m_EscapeSphere.SetActive(false); m_category = TargetCategory.Connecter; m_WindLine.Stop(); }
/*** ジャンプ移動中 ***/ private void JumpMove() { if (Projection(jump_start, jump_end, jump_target.normal, 30.0f)) { transform.position = jump_end; m_Shooter.StringShoot(jump_start, jump_end); m_StateProcessor.State = m_TreeDecision; } }
/*** ジャンプ移動中 ***/ private void JumpMove() { anim.SetBool("jumpair", true); anim.SetBool("jump", false); if (Projection(jump_start, jump_end, jump_target.normal, 30.0f)) { transform.position = jump_end; m_Shooter.StringShoot(jump_start, jump_end); m_hitinfo.collider.GetComponent <Tree>().m_TerritoryRate -= Vector3.Distance(jump_start, jump_end); m_StateProcessor.State = m_TreeDecision; } int sidenumber = GetComponent <StringShooter>().m_SideNumber; //糸を奪う if (distThread >= 0.5f && distThread <= 2 || distNet >= 0.5f && distNet <= 2) { //奪う確率 if (string_Rob == true) { netCount = Random.Range(1, 11); string_Rob = false; } if (netCount <= m_netrob) //失敗したとき { m_StateProcessor.State = m_Fall; } else //成功したとき { anim.SetBool("avoidance", true); stringObj1.GetComponent <StringUnit>().SideUpdate(sidenumber); AnimatorStateInfo animInfo = anim.GetCurrentAnimatorStateInfo(0); if (animInfo.normalizedTime < 1.0f) { anim.SetBool("avoidance", false); } } } }
/*** ジャンプ移動中 ***/ private void JumpMove() { anim.SetBool("jumpair", true); anim.SetBool("jump", false); if (Projection(jump_start, jump_end, jump_target.normal, 30.0f)) { transform.position = jump_end; m_Shooter.StringShoot(jump_start, jump_end); m_StateProcessor.State = m_TreeDecision; } int sidenumber = GetComponent <StringShooter>().m_SideNumber; //糸を奪う if (distThread >= 0.5f && distThread <= 2 || distNet >= 0.5f && distNet <= 2) { //奪う確率 if (net_bool == true) { netCount = Random.Range(1, 11); net_bool = false; } if (netCount <= m_netrob) //失敗したとき { m_StateProcessor.State = m_Fall; } else //成功したとき { anim.SetBool("avoidance", true); stringObj1.GetComponent <StringUnit>().SideUpdate(sidenumber); AnimatorStateInfo animInfo = anim.GetCurrentAnimatorStateInfo(0); if (animInfo.normalizedTime < 1.0f) { anim.SetBool("avoidance", false); } } } //後半時 if (latter_half_time <= wait_time) { //糸を奪う if (distThread >= 0.5f && distThread <= 1 || distNet >= 0.5f && distNet <= 1) { //奪う確率 if (net_bool == true) { netCount = Random.Range(1, 11); net_bool = false; } if (netCount <= m_latterHalfNetRob) //失敗したとき { m_StateProcessor.State = m_Fall; } else //成功したとき { anim.SetBool("avoidance", true); AnimatorStateInfo animInfo = anim.GetCurrentAnimatorStateInfo(0); if (animInfo.normalizedTime < 1.0f) { anim.SetBool("avoidance", false); } stringObj1.GetComponent <Connecter>().m_SideNumber = sidenumber; } } } }
//ジャンプ中の動作 void JumpTpMove() { if (!Depression()) { return; } if (Projection(move_start, move_end, jump_target.normal, m_Angle)) { transform.position = jump_target.point; transform.rotation = Quaternion.LookRotation(Vector3.Cross(transform.right, jump_target.normal), jump_target.normal); if (isEscape) { m_Shooter.StringShoot(m_Prediction.m_HitStringPoint, move_end); } else { m_Shooter.StringShoot(move_start, move_end); } waitFrame = 0; isEscape = false; isLanding = false; m_Prediction.m_HitStringPoint = Vector3.zero; if (jump_target.collider.tag == "String") { m_hitinfo = jump_target; m_StateManager.StateProcassor.State = m_StateManager.StringTp; return; } m_StateManager.StateProcassor.State = m_StateManager.TreeTp; return; } float dif = Mathf.Abs(flightDuration - elapse_time / m_JumpSpeed); if (dif < 0.3f && !isLanding) { m_Animator.SetTrigger("Landing"); isLanding = true; if (jump_target.collider.tag == "String") { m_Animator.SetBool("IsString", true); } else { m_Animator.SetBool("IsString", false); } } if (m_Prediction.m_HitStringPoint != Vector3.zero) { if (Physics.CheckSphere(m_Prediction.m_HitStringPoint, 4f, m_EnemyLayer)) { //回避行動 if ((Input.GetKeyDown(KeyCode.Space) || Input.GetButtonDown("Jump"))) { if (m_Prediction.m_IsString) { m_Prediction.m_HitString.SideUpdate(m_Shooter.m_SideNumber); } else { m_Prediction.m_HitNet.SideUpdate(m_Shooter.m_SideNumber); } m_Shooter.StringShoot(move_start, m_Prediction.m_HitStringPoint); m_Animator.SetTrigger("Escape"); isEscape = true; } else if (Physics.CheckSphere(m_Prediction.m_HitStringPoint, 0.5f, m_EnemyLayer) && !isEscape) { waitFrame = 0; m_Prediction.m_HitStringPoint = Vector3.zero; Fall(); return; } } } }