void Awake()
    {
        myPlayerTran = transform;

        //myRigidbody = GetComponent<Rigidbody>();
        //playerCtrl = GetComponent<PlayerController>();
        moveCtrl = GetComponent <BaseMoveController>();

        Transform shadowTran = myPlayerTran.FindChild(Common.CO.PARTS_GROUNDED);

        if (shadowTran != null)
        {
            shadow = shadowTran.GetComponent <MeshRenderer>();
        }

        if (boostEffect != null)
        {
            boostEffectTran = boostEffect.transform;
            foreach (Transform child in boostEffectTran)
            {
                boostEffectAnim = child.gameObject;
                break;
            }
        }
    }
Example #2
0
    protected void TargetKnockBack(Transform targetTran, float rate = 100.0f)
    {
        if (isKnockBack)
        {
            return;
        }
        BaseMoveController targetCtrl = targetTran.gameObject.GetComponent <BaseMoveController>();

        if (targetCtrl == null)
        {
            return;
        }

        //質量取得
        float myMass     = defaultMass;
        float targetMass = defaultMass;

        if (myRigidbody != null)
        {
            myMass = myRigidbody.mass;
        }
        if (targetCtrl.myRigidbody != null)
        {
            targetMass = targetCtrl.myRigidbody.mass;
        }

        Vector3 velocity  = GetVelocityVector();
        float   forceRate = myMass / targetMass;
        float   force     = Mathf.Pow(velocity.magnitude, 2) / targetMass * forceRate * rate / 100;
        float   limit     = knockBackBaseTime * forceRate;

        if (limit < knockBackBaseTime / 2)
        {
            limit = knockBackBaseTime / 2;
        }
        else if (knockBackBaseTime * 2 < limit)
        {
            limit = knockBackBaseTime * 2;
        }
        //Debug.Log(velocity + " / " + force.ToString() + " / " + limit.ToString());
        targetCtrl.MoveWorld(velocity, force, limit);
    }
Example #3
0
    protected Vector3 DifferentialCorrection(Transform targetTran, float mySpeed = -1)
    {
        float distance   = Vector3.Distance(targetTran.position, myTran.position);
        float myVelocity = mySpeed;

        if (myVelocity < 0)
        {
            myVelocity = GetVelocity();
        }
        BaseMoveController targetCtrl           = targetTran.gameObject.GetComponent <BaseMoveController>();
        Vector3            targetVelocityVector = Vector3.zero;

        if (targetCtrl != null)
        {
            targetVelocityVector = targetCtrl.GetVelocityVector();
        }
        //if (!isNpc) Debug.Log(targetTran.name + " >> v=" + targetVelocityVector.ToString() + " / distance: " + distance.ToString() + " / myVelocity: " + myVelocity.ToString());

        if (distance == 0 || myVelocity == 0)
        {
            return(Vector3.zero);
        }

        //ターゲットまでの到達時間
        float arriveTime = distance / myVelocity;

        if (arriveTime >= 1.5f)
        {
            return(Vector3.zero);
        }
        //if (!isNpc) Debug.Log("arriveTime=" + arriveTime.ToString());

        //到達するまでにターゲットが移動するベクトル
        Vector3 targetMoveVector = targetVelocityVector * arriveTime;

        return(targetMoveVector);
    }
    void Start()
    {
        if (shield != null)
        {
            shieldMat1        = shield.transform.FindChild("Sphere001").GetComponent <Renderer>().material;
            shieldStartColor1 = shieldMat1.GetColor("_TintColor");
            shieldLastColor1  = new Color(shieldStartColor1.r, shieldStartColor1.g, shieldStartColor1.b, 0);
            shieldMat2        = shield.transform.FindChild("Sphere002").GetComponent <Renderer>().material;
            shieldStartColor2 = shieldMat2.GetColor("_TintColor");
            shieldLastColor2  = new Color(shieldStartColor2.r, shieldStartColor2.g, shieldStartColor2.b, 0);
        }

        //初期値保管
        defaultRunSpeed   = runSpeed;
        defaultJumpSpeed  = jumpSpeed;
        defaultBoostSpeed = boostSpeed;
        boostTurnSpeed    = turnSpeed * 10;

        if (SceneManager.GetActiveScene().name == Common.CO.SCENE_CUSTOM)
        {
            //カスタム画面
            isActiveSceane = false;
            return;
        }
        PlayerSetting playerSetting = GetComponent <PlayerSetting> ();

        isNpc    = (playerSetting != null) ? playerSetting.isNpc : true;
        moveCtrl = GetComponent <BaseMoveController>();

        //ステータス構造
        Transform screenCanvasTran = Camera.main.transform.FindChild(Common.CO.SCREEN_CANVAS);
        Transform screenStatusTran = screenCanvasTran.FindChild(Common.CO.SCREEN_STATUS);

        //ダメージノイズ
        if (photonView.isMine && !isNpc)
        {
            Transform damageEffect = screenCanvasTran.FindChild("DamageEffect");
            if (damageEffect != null)
            {
                hitEffect = damageEffect.GetComponent <Image>();
            }
        }

        //HPバー
        Transform hpBarMineTran = screenStatusTran.FindChild("HpLine/Mine/HpBar");

        hpBarMine       = hpBarMineTran.GetComponent <Slider>();
        hpBarMine.value = 0;
        Transform hpBarEnemyTran = screenStatusTran.FindChild("HpLine/Enemy/HpBar");

        hpBarEnemy       = hpBarEnemyTran.GetComponent <Slider>();
        hpBarEnemy.value = 0;

        //HPバーイメージ
        hpBarMineImage  = hpBarMineTran.FindChild("Fill Area/Fill").GetComponent <Image>();
        hpBarEnemyImage = hpBarEnemyTran.FindChild("Fill Area/Fill").GetComponent <Image>();
        //defaultHpColor = hpBarMineImage.color;

        //SPバー
        spBarMine       = screenStatusTran.FindChild("SpLine/SpBar").GetComponent <Slider>();
        spBarMine.value = 0;

        //名前エリア
        nameTextMine  = screenStatusTran.FindChild("NameLine/Mine").GetComponent <Text>();
        nameTextEnemy = screenStatusTran.FindChild("NameLine/Enemy").GetComponent <Text>();

        //勝マーク
        foreach (Transform winMark in screenStatusTran.FindChild("HpLine/Mine/WinMark"))
        {
            if (winMark.name.IndexOf("_on") != -1)
            {
                winCountMineList.Add(winMark.gameObject);
            }
        }
        foreach (Transform winMark in screenStatusTran.FindChild("HpLine/Enemy/WinMark"))
        {
            if (winMark.name.IndexOf("_on") != -1)
            {
                winCountEnemyList.Add(winMark.gameObject);
            }
        }

        //バトルログエリア
        Transform battleLogTran = screenStatusTran.FindChild("BattleLog");

        if (battleLogTran != null)
        {
            battleLogArea[BATTLE_LOG_ATTACK] = battleLogTran.FindChild("Attack").GetComponent <Text>();
            battleLogArea[BATTLE_LOG_DAMAGE] = battleLogTran.FindChild("Damage").GetComponent <Text>();
        }

        Init();

        //ボイス管理
        Transform charaTran = transform.Find(Common.Func.GetBodyStructure());

        if (charaTran)
        {
            voiceManager = charaTran.GetComponent <VoiceManager>();
        }

        if (!isActiveSceane)
        {
            return;
        }

        StartCoroutine(DamageSync());
        StartCoroutine(RecoverSp());

        isReadyBattle = true;
    }