老虎普工

This commit is contained in:
GL 2025-01-13 11:57:58 +08:00
parent f7a42f94ab
commit 842d9b9770

View File

@ -129,6 +129,7 @@ public class Attack : MonoBehaviour
public void GetAllColliderInAttackRange(Collider2D[] colliders) public void GetAllColliderInAttackRange(Collider2D[] colliders)
{ {
for (int i=0;i<colliders.Length;i++) for (int i=0;i<colliders.Length;i++)
{ {
Role targetRole = colliders[i].GetComponent<Role>(); Role targetRole = colliders[i].GetComponent<Role>();
@ -146,18 +147,26 @@ public class Attack : MonoBehaviour
} }
else if (bulletPrefab.GetComponent<Bullet>().myBulletType == BulletType.Spraying|| bulletPrefab.GetComponent<Bullet>().myBulletType==BulletType.XuLi) else if (bulletPrefab.GetComponent<Bullet>().myBulletType == BulletType.Spraying|| bulletPrefab.GetComponent<Bullet>().myBulletType==BulletType.XuLi)
{ {
if (i==0&&animator.transform.position.x > colliders[i].transform.position.x) if (animator.GetInteger("State")==0)
{ {
dir = -1; if (animator.transform.position.x > colliders[i].transform.position.x)
} {
else dir = -1;
{ animator.transform.rotation = Quaternion.Euler(0, 180, 0);
dir = 1; }
} else
{
dir = 1;
animator.transform.rotation = Quaternion.Euler(0, 0, 0);
}
animator.transform.localScale = new Vector3(animator.transform.localScale.x*dir, animator.transform.localScale.y, animator.transform.localScale.z);
animator.SetInteger("State", 1);
flag = true; //animator.transform.localScale = new Vector3(animator.transform.localScale.x * dir, animator.transform.localScale.y, animator.transform.localScale.z);
animator.SetInteger("State", 1);
flag = true;
}
} }
lastAttackTime = Time.time; // 更新上次攻击时间 lastAttackTime = Time.time; // 更新上次攻击时间
@ -221,15 +230,15 @@ public class Attack : MonoBehaviour
switch (BulletNumber) switch (BulletNumber)
{ {
case 1: case 1:
// 生成一个不旋转的子 // 生成一个不旋转的子
GenerateBullet(0f, BulletStartPos.position, new Vector2(0, 0)); GenerateBullet(0f, BulletStartPos.position, new Vector2(0, 0),dir);
break; break;
case 3: case 3:
// 生成三个子弹一个不旋转一个向上旋转30度一个向下旋转30度 // 生成三个子弹一个不旋转一个向上旋转30度一个向下旋转30度
GenerateBullet(-35f, BulletStartPos.position, new Vector2(0, -0.25f)); GenerateBullet(-35f, BulletStartPos.position, new Vector2(0, -0.25f),dir);
GenerateBullet(0f, BulletStartPos.position, new Vector2(0, 0)); GenerateBullet(0f, BulletStartPos.position, new Vector2(0, 0),dir);
GenerateBullet(35f, BulletStartPos.position, new Vector2(0, 0.25f)); GenerateBullet(35f, BulletStartPos.position, new Vector2(0, 0.25f),dir);
break; break;
default: default:
@ -241,11 +250,12 @@ public class Attack : MonoBehaviour
} }
private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos) private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos,int dir)
{ {
// 实例化子弹对象并设置父物体为 transform.root // 实例化子弹对象并设置父物体为 transform.root
GameObject bulletGameObj = GameObject.Instantiate(bulletPrefab, transform.root); GameObject bulletGameObj = GameObject.Instantiate(bulletPrefab, transform.root);
bulletGameObj.transform.localScale = new Vector2(bulletGameObj.transform.localScale.x*dir, bulletGameObj.transform.localScale.y);
// 获取子弹的原始宽度 // 获取子弹的原始宽度
float originalWidth = bulletGameObj.GetComponentInChildren<SpriteRenderer>().bounds.size.x; float originalWidth = bulletGameObj.GetComponentInChildren<SpriteRenderer>().bounds.size.x;
@ -275,14 +285,14 @@ public class Attack : MonoBehaviour
offsetX = (newWidth - originalWidth) / 2; offsetX = (newWidth - originalWidth) / 2;
if (offsetX > 0) if (offsetX > 0)
{ {
offsetX += 0.15f; offsetX += 0.15f*dir;
} }
// 调整子弹的位置,确保左边界不变 // 调整子弹的位置,确保左边界不变
bulletGameObj.transform.position = new Vector2(originalPosition.x + offsetX, originalPosition.y); bulletGameObj.transform.position = new Vector2(originalPosition.x + offsetX, originalPosition.y);
} }
// 添加位置微调 // 添加位置微调
bulletGameObj.transform.position = new Vector2(bulletGameObj.transform.position.x + 1.75f, bulletGameObj.transform.position.y + 0.2f); bulletGameObj.transform.position = new Vector2(bulletGameObj.transform.position.x + 1.75f*dir, bulletGameObj.transform.position.y + 0.2f);
// 获取动画组件(如果需要的话) // 获取动画组件(如果需要的话)
fireAnis.Add(bulletGameObj.GetComponentInChildren<Animator>()); fireAnis.Add(bulletGameObj.GetComponentInChildren<Animator>());
@ -310,7 +320,8 @@ public class Attack : MonoBehaviour
bulltes.Add(bulletGameObj); bulltes.Add(bulletGameObj);
} }
public void EndFire() public void EndFire()
{ {