|
|
@@ -21,7 +21,7 @@ public class AngryBullet : MonoBehaviour
|
|
|
|
|
|
[Header("Ä¿±êµ¥Î»")]
|
|
|
public Enemy[] ens;
|
|
|
- public bool hasTarget;
|
|
|
+ public Enemy hasTarget;
|
|
|
public BoxCollider searchCol;
|
|
|
|
|
|
[Header("Ë÷µÐʱ¼ä")]
|
|
|
@@ -47,6 +47,7 @@ public class AngryBullet : MonoBehaviour
|
|
|
{
|
|
|
Vector3 size = searchCol.size;
|
|
|
size.x = maxDistance * 2;
|
|
|
+ size.y = maxDistance * 2;
|
|
|
searchCol.size = size;
|
|
|
ens = new Enemy[maxTimes];
|
|
|
if (owner.bodyTrans.localScale.x < 0)
|
|
|
@@ -80,12 +81,23 @@ public class AngryBullet : MonoBehaviour
|
|
|
switch (state)
|
|
|
{
|
|
|
case BulletState.findTarget:
|
|
|
- hasTarget = false;
|
|
|
+ hasTarget = null;
|
|
|
searchCol.enabled = true;
|
|
|
curTime = maxTime;
|
|
|
break;
|
|
|
case BulletState.traceTarget:
|
|
|
- fx = -fx;
|
|
|
+ if (!hasTarget)
|
|
|
+ {
|
|
|
+ fx = (int)-owner.bodyTrans.localScale.x;
|
|
|
+ }
|
|
|
+ else if (hasTarget.transform.position.x > transform.position.x)
|
|
|
+ {
|
|
|
+ fx = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ fx = -1;
|
|
|
+ }
|
|
|
transform.localScale = new Vector3(fx, 1, 1);
|
|
|
self.enabled = true;
|
|
|
break;
|
|
|
@@ -110,8 +122,19 @@ public class AngryBullet : MonoBehaviour
|
|
|
}
|
|
|
break;
|
|
|
case BulletState.traceTarget:
|
|
|
- curDis = fx * speed * Time.deltaTime;
|
|
|
- transform.position += new Vector3(curDis, 0, 0);
|
|
|
+ Vector3 dir;
|
|
|
+ if (!isFirst && (hasTarget == null || hasTarget.isDie))
|
|
|
+ {
|
|
|
+ ChangeState(BulletState.findTarget);
|
|
|
+ dir = new Vector3(fx, 0, 0);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ dir = (hasTarget.transform.position + Vector3.up - transform.position).normalized;
|
|
|
+ }
|
|
|
+ Vector3 move = dir * speed * Time.deltaTime;
|
|
|
+ curDis = move.x;
|
|
|
+ transform.position += move;
|
|
|
if (isFirst && Mathf.Abs(curDis) >= firstMaxDis)
|
|
|
{
|
|
|
ChangeState(BulletState.die);
|