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