// Use this for initialization void Start() { ecZ = GetComponent<Enemy_ControllerZ>(); at_para = Bullet.GetComponent<Attack_Parameter>(); animator = GetComponentInChildren<Animator>(); Player = GameObject.FindWithTag ("Player").transform; }
// Use this for initialization void Start() { self_state = Self_State_Enmu.move; animator = GetComponent<Animator>(); self = GetComponent<Transform>(); rigidbody = GetComponent<Rigidbody>(); rigidbody.mass = 3.0f; //rigidbody.constraints = RigidbodyConstraints.FreezeRotation; bones = GetComponentsInChildren<Transform>() as Transform[]; camRot = self.rotation; foreach (Transform t in bones) { if (t.GetComponent<Rigidbody>() && t.GetComponent<Rigidbody>() != rigidbody) t.GetComponent<Rigidbody>().isKinematic = true; if (t.GetComponent<Collider>() && t.GetComponent<Collider>() != self.GetComponent<Collider>()) t.GetComponent<Collider>().isTrigger = true; } if (headBone == null) { foreach (Transform t in bones) { if (t.name == "head") headBone = t; } } if (weapons.sword_Hand) weapons.sword_Hand.GetComponent<Renderer>().enabled = false; if (weapons.sword_Holster) weapons.sword_Holster.GetComponent<Renderer>().enabled = true; // On if (weapons.bow_Hand) weapons.bow_Hand.GetComponent<Renderer>().enabled = false; if (weapons.bow_Holster) weapons.bow_Holster.GetComponent<Renderer>().enabled = false; if (weapons.bow_Quiver) weapons.bow_Quiver.GetComponent<Renderer>().enabled = false; if (weapons.rifle_Hand) weapons.rifle_Hand.GetComponent<Renderer>().enabled = false; if (weapons.rifle_Holster) weapons.rifle_Holster.GetComponent<Renderer>().enabled = false; if (weapons.pistol_Hand) weapons.pistol_Hand.GetComponent<Renderer>().enabled = false; if (weapons.pistol_Holster) weapons.pistol_Holster.GetComponent<Renderer>().enabled = false; self_attack_parameter = new Attack_Parameter(); animator.SetLayerWeight(1, 1f); navMeshAgent = transform.parent.GetComponent<NavMeshAgent>(); enemy = GameObject.Find("hero"); animator = GetComponent<Animator>(); IEnumerator custom_nav_Coroutine = Timer.Timer_IEnumerator(0.5f, custom_nav_fuc); StartCoroutine(custom_nav_Coroutine); }
// Use this for initialization void Start() { vision = GameObject.FindGameObjectWithTag("Player").GetComponentInChildren<Vision>(); At = GetComponent<Attack_Parameter>(); oldTarget = vision.nearTarget; }
void OnTriggerEnter(Collider col) { if (col.tag == "Bullet") {//タグ"Bullet"が攻撃 //当たった弾の攻撃力取得 Attack_Parameter attack = col.gameObject.GetComponent <Attack_Parameter>(); if (attack.Parent.name != Parent.name) { //ダメージ処理/////////////////////////////////////////////////////////////// int damage = attack.power; //弱点属性でダメージ2倍 for (int i = 0; i < Cpara.weak_element.Length; i++) { if (attack.GetElement() == Cpara.weak_element[i]) { damage *= 2; } } //耐性属性でダメージ1/2倍 for (int i = 0; i < Cpara.proof_element.Length; i++) { if (attack.GetElement() == Cpara.proof_element[i]) { damage /= 2; } } //無効化属性でダメージ0 for (int i = 0; i < Cpara.invalid_element.Length; i++) { if (attack.GetElement() == Cpara.invalid_element[i]) { damage = 0; } } //弱点部位でダメージ2倍 if (weak_point) { damage *= 2; } //実際のダメージ処理 if (Cpara.GetF_Damage()) { Cpara.H_point -= damage; Audio_Source.PlayOneShot(Audio_Source.clip); //ダメージ音 StartCoroutine(DamageEffects()); Cpara.SendMessage("Damage", SendMessageOptions.DontRequireReceiver); //とりあえずダメージを受けたことを知らせる ReverseDamage(); //ダメージを連続で受けないようにする //StartCoroutine(Blink()); Invoke("ReverseDamage", 0.5f); } //こっから演出//////////////////////////////////////////////////////////////// //属性エフェクト //switch (col.GetComponent<Attack_Parameter>().GetElement()) //{ // case Attack_Parameter.MagicElement.Earth: // //effectKind = EffectKind.Earth; // break; // case Attack_Parameter.MagicElement.Water: // effectKind = EffectKind.Water; // break; // case Attack_Parameter.MagicElement.Fire: // effectKind = EffectKind.Fire; // break; // case Attack_Parameter.MagicElement.Wind: // //effectKind = EffectKind.Wind; // break; //} //Effects[(int)effectKind].transform.position = col.transform.position;//弾が当たった場所 ////一瞬だけ消してつけるともう一回再生してくれる //Effects[(int)effectKind].SetActive(false); //Effects[(int)effectKind].SetActive(true); //どしゅ Effects[(int)EffectKind.Hit].transform.position = col.transform.position;//弾が当たった場所 //一瞬だけ消してつけるともう一回再生してくれる Effects[(int)EffectKind.Hit].SetActive(false); Effects[(int)EffectKind.Hit].SetActive(true); } //こっから状態異常/////////////////////////////////////////////////////////// //ノックバック if (attack.GetKnockBack().magnitude > 0) { Cpara.ReverseKnock();//ノックバック状態ですよ //vec2をvec1に向かって角度差分だけ回転させる var vec1 = (Parent.gameObject.transform.position - col.gameObject.transform.position); var vec2 = attack.GetKnockBack(); //Y軸は別計算で vec1 = new Vector3(vec1.x, 0, vec1.z).normalized; vec2 = new Vector3(vec2.x, 0, vec2.z).normalized; var axis = Vector3.Cross(vec2, vec1); //2つのベクトルに直行するベクトルを求める(外積) var ang = Quaternion.LookRotation(vec2).eulerAngles.y - Quaternion.LookRotation(vec1).eulerAngles.y; //二つのベクトルの角度差 var res = Vector3.zero; //吹っ飛ぶ方向 if (ang > -180) { res = Quaternion.AngleAxis(-ang, axis) * attack.GetKnockBack();//axisを軸にして第1引数の角度だけ回転させる } else { res = Quaternion.AngleAxis(ang, axis) * attack.GetKnockBack();//axisを軸にして第1引数の角度だけ回転させる } //吹っ飛ぶ iTween.MoveTo(Parent.gameObject, iTween.Hash( "position", new Vector3( Parent.gameObject.transform.position.x + res.x, Parent.gameObject.transform.position.y + attack.GetKnockBack().y, Parent.gameObject.transform.position.z + res.z) /*Parent.gameObject.transform.position.x - (col.gameObject.transform.position.x - Parent.gameObject.transform.position.x) * attack.GetKnockBack().x, * Parent.gameObject.transform.position.y + attack.GetKnockBack().y, * Parent.gameObject.transform.position.z - (col.gameObject.transform.position.z - Parent.gameObject.transform.position.z) * attack.GetKnockBack().z)*/ //- (col.gameObject.transform.position - Parent.gameObject.transform.position) /*Parent.transform.TransformDirection(attack.GetKnockBack())*/, "time", 0.3f /*, * "easetype", iTween.EaseType.easeOutBack*/) ); Cpara.SetKeylock();//行動不能だったと思う } //毒 if (attack.GetAilment() == Attack_Parameter.Ailment.Poison) { if (!Cpara.flag_poison)//毒状態は重ならない { Cpara.flag_poison = true; Effects[(int)EffectKind.Poison].SetActive(true); StartCoroutine(Poison());//一回動かせばいい } } } }