protected override void Init() { bulletEffect_Transform = M_Transform.Find("Armature/Weapon/BulletEffect").GetComponent <Transform>(); bulletEffect_Clip = Resources.Load <AudioClip>("Soures/Shotgun_Pump"); bulletEffect_Shell = Resources.Load <GameObject>("Prefabs/Gun/Shotgun_Shell"); prefab_bullet = Resources.Load <GameObject>("Prefabs/Gun/Shotgun_Bullet"); }
public override void CollisionEnter(Collision collision) { if (collision.gameObject.tag != "Arrow") { //箭头停止运动 M_Rigidbody.Sleep(); //如果碰到了障碍物 if (collision.collider.gameObject.layer == LayerMask.NameToLayer("Env")) {//计算伤害 collision.collider.GetComponent <BulletMarks>().Hp -= Demage; collision.collider.GetComponent <BulletMarks>().PlayAudio(hit); //移除刚体 Destroy(M_Rigidbody); //移除碰撞器 Destroy(m_BoxCollider); //设置父物体跟随 M_Transform.SetParent(collision.gameObject.transform); StartCoroutine("TileAnimation", pivot_Transform); } if (collision.collider.gameObject.layer == LayerMask.NameToLayer("AI")) {//计算伤害 collision.collider.GetComponentInParent <AI>().HP -= Demage; collision.collider.GetComponentInParent <AI>().PlayFleshEffect(hit); //移除刚体 Destroy(M_Rigidbody); //移除碰撞器 Destroy(m_BoxCollider); //设置父物体跟随 M_Transform.SetParent(collision.gameObject.transform); StartCoroutine("TileAnimation", pivot_Transform); } } }
protected override void Init() { bulletEffect_Transform = M_Transform.Find("Assault_Rifle/BulletEffect").GetComponent <Transform>(); bulletParentTransform = GameObject.Find("TempObject/BulletParent").GetComponent <Transform>(); gunPointEffectParent = GameObject.Find("TempObject/GunPointEffectParent").GetComponent <Transform>(); prefab_bullet = Resources.Load <GameObject>("Prefabs/Gun/Bullet"); }
/// <summary> /// 进入到开镜状态 /// </summary> public void EnterHoldPose(float time = 0.2f, int fov = 40) { //正对屏幕 M_Transform.DOLocalMove(EndPos, time); M_Transform.DOLocalRotate(EndRot, time); //放大环境射线机 M_EnvCamera.DOFieldOfView(fov, time); }
/// <summary> /// 退出到开镜射击状态 /// </summary> public void ExitHoldPose(float time = 0.2f, int fov = 60) { //摆回正常状态 M_Transform.DOLocalMove(StartPos, time); M_Transform.DOLocalRotate(StartRot, time); //环境摄像机缩小 M_EnvCamera.DOFieldOfView(fov, time); }
protected override void InitOther() { Damage = 0; m_BoxCollider = gameObject.GetComponent <BoxCollider>(); if (m_BoxCollider == null) { m_BoxCollider = gameObject.AddComponent <BoxCollider>(); } m_Pivot = M_Transform.Find("Pivot").GetComponent <Transform>(); }
protected override void Collision(Collision coll) { M_Rigidbody.Sleep(); if (coll.gameObject.layer == LayerMask.NameToLayer("Envionment")) { GameObject.Destroy(m_BoxCollider); GameObject.Destroy(M_Rigidbody); BulletMark tempBulletMark = coll.collider.GetComponent <BulletMark>(); if (tempBulletMark != null) { tempBulletMark.HP -= Damage; } StartCoroutine("AnimationPlay", m_Pivot); M_Transform.SetParent(coll.gameObject.transform); } else if (coll.gameObject.layer == LayerMask.NameToLayer("AI")) { GameObject.Destroy(m_BoxCollider); GameObject.Destroy(M_Rigidbody); AI tempAI = coll.collider.GetComponentInParent <AI>(); if (tempAI != null) { // 头部伤害加倍 if (coll.collider.gameObject.name == "Head") { tempAI.HeadGetHit(Damage); } else { tempAI.NormalHit(Damage); } // 播放血液特效 tempAI.PlayBloodEffect(aiEffectHit); } StartCoroutine("AnimationPlay", m_Pivot); M_Transform.SetParent(coll.gameObject.transform); } }
/// <summary> /// 碰撞事件. /// </summary> protected override void CollisionEnter(Collision other) { GameObject.Destroy(M_Rigidbody); GameObject.Destroy(m_BoxCollider); BulletMark bulletMark = other.gameObject.GetComponent <BulletMark>(); AIBase ai = other.gameObject.GetComponentInParent <AIBase>(); // 攻击环境物体. if (bulletMark != null) { bulletMark.Hp -= Damage; bulletMark.PlayHitAudio(hit); } // 攻击AI角色. else if (ai != null) { // 头部伤害加倍. if (other.gameObject.name == "Head") { ai.Life -= 2 * Damage; ai.HitHeadState(); } else { ai.Life -= Damage; ai.HitNormalState(); } ai.PlayEffect(hit); } // 通用效果展现. M_Transform.SetParent(other.gameObject.GetComponent <Transform>()); StartCoroutine("TailAnimation", m_PivotTransform); }
protected override void FindGunPoint() { GunPoint = M_Transform.Find(PathDefine.gunTransName + "/" + PathDefine.rifleGunPointTransName).transform; }
//子类实现父类的定义的初始化枪口位置的抽象方法 protected override void FindGunPointTransform() { FireEffect_Transform = M_Transform.Find("Assault_Rifle/FireEffect").GetComponent <Transform>(); }
protected override void InitShootPos() { ShootPos = M_Transform.Find("Hunting_Rifle/EffectPos_A").GetComponent <Transform>(); }
protected override void InitShellPos() { // 位置属性加载 ShellPos = M_Transform.Find("Assault_Rifle/EffectPos_B").GetComponent <Transform>(); }
protected override void InitHoldPostPos() { FireEffect_Transform = M_Transform.Find("Armature/Weapon/FireEffect").GetComponent <Transform>(); }
protected override void InitShellPos() { ShellPos = M_Transform.Find("Armature/Weapon/EffectPos_B").GetComponent <Transform>(); }
public override void Init() { m_BoxCollider = gameObject.GetComponent <BoxCollider>(); pivot_Transform = M_Transform.Find("Pivot").GetComponent <Transform>(); }
/// <summary> /// 开镜状态. /// </summary> public virtual void HoldState(float time = 0.2f, int FOV = 45) { M_Transform.DOLocalMove(HoldPos, time); M_Transform.localRotation = Quaternion.Euler(HoldRotate); Env_Camera.DOFieldOfView(FOV, time); }
/// <summary> /// 普通状态 /// </summary> public virtual void NormalState(float time = 0.2f, int FOV = 60) { M_Transform.DOLocalMove(NormalPos, time); M_Transform.localRotation = Quaternion.Euler(NormalRotate); Env_Camera.DOFieldOfView(FOV, time); }
protected override void InitShootPos() { ShootPos = M_Transform.Find("Armature/Arm_L/Forearm_L/Wrist_L/Weapon/EffectPos_A").GetComponent <Transform>(); }
private Transform m_PivotTransform; // 中心点用于尾部动画. /// <summary> /// 查找加载初始化. /// </summary> protected override void FindAndLoadInit() { m_BoxCollider = gameObject.GetComponent <BoxCollider>(); m_PivotTransform = M_Transform.Find("Pivot"); }
protected override void FindGunPointTransform() { FireEffect_Transform = M_Transform.Find("Armature/Weapon/FireEffect").GetComponent <Transform>(); }
protected override void FindGunPoint() { GunPoint = M_Transform.Find(PathDefine.gunTransName + "/" + PathDefine.sniperGunPointTransName); }