示例#1
0
    //ジャンプパラメータをリセット
    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();
    }
示例#2
0
 /*** ジャンプ移動中 ***/
 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;
     }
 }
示例#3
0
    /*** ジャンプ移動中 ***/
    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);
                }
            }
        }
    }
示例#4
0
    /*** ジャンプ移動中 ***/
    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;
                }
            }
        }
    }
示例#5
0
    //ジャンプ中の動作
    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;
                }
            }
        }
    }