|
@@ -12,6 +12,11 @@ public enum BulletType
|
|
|
}
|
|
}
|
|
|
public class Bullet : MonoBehaviour
|
|
public class Bullet : MonoBehaviour
|
|
|
{
|
|
{
|
|
|
|
|
+ [Header("是否留下箭种")]
|
|
|
|
|
+ public bool canStop;
|
|
|
|
|
+ public float stopTime;
|
|
|
|
|
+
|
|
|
|
|
+ [Header("组件")]
|
|
|
public Character owner;
|
|
public Character owner;
|
|
|
public Rigidbody rb;
|
|
public Rigidbody rb;
|
|
|
public List<BeHitTrigger> trigedObjs;
|
|
public List<BeHitTrigger> trigedObjs;
|
|
@@ -24,8 +29,10 @@ public class Bullet : MonoBehaviour
|
|
|
public float speed;
|
|
public float speed;
|
|
|
public float maxFlyTime = 2f;
|
|
public float maxFlyTime = 2f;
|
|
|
public float flyTime;
|
|
public float flyTime;
|
|
|
|
|
+
|
|
|
[Header("子弹是否追踪,不勾选则水平往前射出")]
|
|
[Header("子弹是否追踪,不勾选则水平往前射出")]
|
|
|
public bool isTrack;
|
|
public bool isTrack;
|
|
|
|
|
+
|
|
|
[Header("子弹是否始终追踪,勾选:子弹会跟着目标转,不勾选:子弹斜着往前直飞")]
|
|
[Header("子弹是否始终追踪,勾选:子弹会跟着目标转,不勾选:子弹斜着往前直飞")]
|
|
|
public bool canAlwaysTrack;
|
|
public bool canAlwaysTrack;
|
|
|
public Character trackTarget;
|
|
public Character trackTarget;
|
|
@@ -175,7 +182,29 @@ public class Bullet : MonoBehaviour
|
|
|
hitTrigger.owner.DebugAttackFrom(owner.name, curDamage);
|
|
hitTrigger.owner.DebugAttackFrom(owner.name, curDamage);
|
|
|
}
|
|
}
|
|
|
isGetTarget = true;
|
|
isGetTarget = true;
|
|
|
- gameObject.SetActive(false);
|
|
|
|
|
|
|
+ if (!canStop)
|
|
|
|
|
+ {
|
|
|
|
|
+ gameObject.SetActive(false);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ rb.velocity = Vector3.zero;
|
|
|
|
|
+ rb.isKinematic = true;
|
|
|
|
|
+ GetComponent<Collider>().enabled = false;
|
|
|
|
|
+ transform.parent = hitTrigger.transform;
|
|
|
|
|
+ BulletStop bs = GetComponent<BulletStop>();
|
|
|
|
|
+ if (bs)
|
|
|
|
|
+ {
|
|
|
|
|
+ bs.enabled = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ bs = gameObject.AddComponent<BulletStop>();
|
|
|
|
|
+ }
|
|
|
|
|
+ bs.SetDisappearTime(stopTime);
|
|
|
|
|
+ enabled = false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
break;
|
|
break;
|
|
|
case BulletType.Penetrate:
|
|
case BulletType.Penetrate:
|
|
|
hitTrigger.BeHit(curDamage, force * (-transform.right), changeHurt, repelValue);
|
|
hitTrigger.BeHit(curDamage, force * (-transform.right), changeHurt, repelValue);
|