From f7a42f94abe825d3d444df98f2a4faa4019ed71e Mon Sep 17 00:00:00 2001 From: GL <2365963573@qq.com> Date: Mon, 13 Jan 2025 11:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=81=AB=E8=80=81=E8=99=8E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Role/Attack.cs | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Role/Attack.cs b/Role/Attack.cs index 95b1cee..c64deee 100644 --- a/Role/Attack.cs +++ b/Role/Attack.cs @@ -50,7 +50,7 @@ public class Attack : MonoBehaviour public bool flag = false; [HideInInspector] public float timer = 0; - + [Header("角色面朝方向")] public int dir=1;//1是右边,-1是左边 public async void Start() { bulletData = new BulletData(); @@ -82,17 +82,15 @@ public class Attack : MonoBehaviour // 获取碰撞体的尺寸 Vector2 boxSize = attackColliderBox.size; - // 只检测右边一半,修改尺寸 - boxSize.x /= 2f; + // 获取碰撞体的中心位置 Vector3 colliderCenter = attackColliderBox.transform.position; - // 计算右半部分的中心位置,确保中心点在矩形的右半部分 - Vector3 rightCenter = new Vector3(colliderCenter.x + attackColliderBox.size.x / 4f, colliderCenter.y, colliderCenter.z); + - // 使用OverlapBoxAll检测右半部分区域 - Collider2D[] colliders = Physics2D.OverlapBoxAll(rightCenter, boxSize, 0f); + + Collider2D[] colliders = Physics2D.OverlapBoxAll(colliderCenter, boxSize, 0f); GetAllColliderInAttackRange(colliders); } @@ -131,9 +129,9 @@ public class Attack : MonoBehaviour public void GetAllColliderInAttackRange(Collider2D[] colliders) { - foreach (Collider2D collider in colliders) + for (int i=0;i(); + Role targetRole = colliders[i].GetComponent(); if (targetRole && targetRole.camp != role.camp) { @@ -148,6 +146,16 @@ public class Attack : MonoBehaviour } else if (bulletPrefab.GetComponent().myBulletType == BulletType.Spraying|| bulletPrefab.GetComponent().myBulletType==BulletType.XuLi) { + if (i==0&&animator.transform.position.x > colliders[i].transform.position.x) + { + dir = -1; + } + else + { + dir = 1; + } + + animator.transform.localScale = new Vector3(animator.transform.localScale.x*dir, animator.transform.localScale.y, animator.transform.localScale.z); animator.SetInteger("State", 1); flag = true; } @@ -350,16 +358,8 @@ public class Attack : MonoBehaviour // 更新矩形碰撞体的尺寸 attackColliderBox.size = boxSize; characterClick.OrSizeX = boxSize.x / characterClick.StartSizeX; // * 2f 因为 radius 是半径,图片的尺寸通常是直径 - characterClick.OrSizeY = boxSize.y * 2 / characterClick.StartSizeY; - float offSetX = (characterClick.StartSizeX - characterClick.OrSizeX) / 2; - if (role.AttackRange==3) - { - offSetX += 0.6f; - } - - attackRangeSprite.transform.position = new Vector2(attackRangeSprite.transform.position.x - offSetX, attackRangeSprite.transform.position.y); - //characterClick.OrSizeY = 1; - //Debug.Log("修改图片宽度"); + characterClick.OrSizeY = boxSize.y / characterClick.StartSizeY; + } @@ -522,7 +522,7 @@ public class Attack : MonoBehaviour // 根据 bulletLength 设置子弹的长度 - BulletGamobj.transform.localScale = new Vector3(BulletGamobj.transform.localScale.x + bulletLengthAdd, BulletGamobj.transform.localScale.y, BulletGamobj.transform.localScale.z); + BulletGamobj.transform.localScale = new Vector3(BulletGamobj.transform.localScale.x + bulletLengthAdd, BulletGamobj.transform.localScale.y, BulletGamobj.transform.localScale.z); }