攻击调整
This commit is contained in:
parent
b57312f05f
commit
bf88fb96a3
@ -278,37 +278,56 @@ public class Attack : MonoBehaviour
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos)//角度,旋转中心点
|
private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos)
|
||||||
{
|
{
|
||||||
// 实例化子弹对象并设置父物体为 transform.root
|
// 实例化子弹对象并设置父物体为 transform.root
|
||||||
GameObject bulletGameObj = GameObject.Instantiate(bulletPrefab, transform.root);
|
GameObject bulletGameObj = GameObject.Instantiate(bulletPrefab, transform.root);
|
||||||
|
|
||||||
// 获取子弹的原始宽度
|
// 获取子弹的原始宽度
|
||||||
float originalWidth = bulletGameObj.GetComponentInChildren<SpriteRenderer>().bounds.size.x;
|
float originalWidth = bulletGameObj.GetComponentInChildren<SpriteRenderer>().bounds.size.x;
|
||||||
|
|
||||||
|
// 保存原始位置,以便在攻击范围变化时恢复
|
||||||
|
Vector2 originalPosition = bulletGameObj.transform.position;
|
||||||
|
|
||||||
// 设置子弹的缩放
|
// 设置子弹的缩放
|
||||||
|
if (role.AttackRange / 2 > 1)
|
||||||
if (role.AttackRange / 2>1)
|
|
||||||
{
|
{
|
||||||
|
float offsetX = 0;
|
||||||
bulletGameObj.transform.localScale = new Vector2(role.AttackRange / 2, role.AttackRange / 3);
|
bulletGameObj.transform.localScale = new Vector2(role.AttackRange / 2, role.AttackRange / 3);
|
||||||
// 计算缩放后的偏移量
|
|
||||||
float offsetX = (originalWidth * (role.AttackRange / 2)) / 4f+0.15f;
|
|
||||||
|
|
||||||
|
// 计算新的子弹宽度
|
||||||
|
float newWidth = bulletGameObj.GetComponentInChildren<SpriteRenderer>().bounds.size.x;
|
||||||
|
|
||||||
|
//// 根据宽度变化计算偏移量
|
||||||
|
//if (newWidth > originalWidth)
|
||||||
|
//{
|
||||||
|
// // 如果新宽度大于原始宽度,计算向右的偏移
|
||||||
|
// offsetX = (originalWidth * (role.AttackRange / 2)) / 4f + 0.15f;
|
||||||
|
//}
|
||||||
|
//else if (newWidth < originalWidth)
|
||||||
|
//{
|
||||||
|
// // 如果新宽度小于原始宽度,计算向左的偏移
|
||||||
|
// offsetX = -((originalWidth * (role.AttackRange / 2)) / 4f +0.15f);
|
||||||
|
//}
|
||||||
|
offsetX = (newWidth - originalWidth) / 2;
|
||||||
|
if (offsetX>0)
|
||||||
|
{
|
||||||
|
offsetX += 0.15f;
|
||||||
|
}
|
||||||
// 调整子弹的位置,确保左边界不变
|
// 调整子弹的位置,确保左边界不变
|
||||||
bulletGameObj.transform.position = new Vector2(bulletGameObj.transform.position.x + offsetX, bulletGameObj.transform.position.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, bulletGameObj.transform.position.y + 0.2f);
|
||||||
|
|
||||||
// 获取动画组件(如果需要的话)
|
// 获取动画组件(如果需要的话)
|
||||||
fireAnis.Add(bulletGameObj.GetComponentInChildren<Animator>());
|
fireAnis.Add(bulletGameObj.GetComponentInChildren<Animator>());
|
||||||
|
|
||||||
// 设置子弹的初始位置,保持偏移量
|
// 设置子弹的初始属性
|
||||||
|
|
||||||
|
|
||||||
bulletGameObj.GetComponent<Bullet>().role = role;
|
bulletGameObj.GetComponent<Bullet>().role = role;
|
||||||
bulletGameObj.GetComponent<Bullet>().attackObj = this;
|
bulletGameObj.GetComponent<Bullet>().attackObj = this;
|
||||||
|
|
||||||
|
|
||||||
// 计算子弹相对于旋转中心的偏移
|
// 计算子弹相对于旋转中心的偏移
|
||||||
Vector2 direction = bulletGameObj.transform.position - (Vector3)startPos;
|
Vector2 direction = bulletGameObj.transform.position - (Vector3)startPos;
|
||||||
|
|
||||||
@ -320,17 +339,16 @@ private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos)//
|
|||||||
|
|
||||||
// 设置子弹的旋转角度
|
// 设置子弹的旋转角度
|
||||||
bulletGameObj.transform.rotation = Quaternion.Euler(0, 0, angle);
|
bulletGameObj.transform.rotation = Quaternion.Euler(0, 0, angle);
|
||||||
|
|
||||||
|
// 根据变化调整位置(例如“changePos”可能需要与原始位置结合使用)
|
||||||
bulletGameObj.transform.position = bulletGameObj.transform.position + (Vector3)changePos;
|
bulletGameObj.transform.position = bulletGameObj.transform.position + (Vector3)changePos;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 将生成的子弹添加到子弹列表中
|
// 将生成的子弹添加到子弹列表中
|
||||||
bulltes.Add(bulletGameObj);
|
bulltes.Add(bulletGameObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void EndFire()
|
public void EndFire()
|
||||||
{
|
{
|
||||||
foreach (Animator ani in fireAnis)
|
foreach (Animator ani in fireAnis)
|
||||||
@ -371,7 +389,7 @@ private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos)//
|
|||||||
|
|
||||||
// 假设攻击范围决定了矩形的长宽比
|
// 假设攻击范围决定了矩形的长宽比
|
||||||
// attackRange * 2 可以增加攻击范围的矩形尺寸,调整比例或常数以适应你的需要
|
// attackRange * 2 可以增加攻击范围的矩形尺寸,调整比例或常数以适应你的需要
|
||||||
boxSize.x = role.AttackRange * 2f+2; // 设置矩形宽度
|
boxSize.x = role.AttackRange * 2f + 2; // 设置矩形宽度
|
||||||
//boxSize.y = role.AttackRange/3; // 设置矩形高度
|
//boxSize.y = role.AttackRange/3; // 设置矩形高度
|
||||||
|
|
||||||
// 更新矩形碰撞体的尺寸
|
// 更新矩形碰撞体的尺寸
|
||||||
@ -382,11 +400,18 @@ private void GenerateBullet(float angle, Vector2 startPos, Vector2 changePos)//
|
|||||||
//float originalWidth = attackRangeSprite.bounds.size.x;
|
//float originalWidth = attackRangeSprite.bounds.size.x;
|
||||||
//attackRangeSprite.transform.localScale = new Vector3(boxSize.x*1.4f/4, boxSize.y, 1f);
|
//attackRangeSprite.transform.localScale = new Vector3(boxSize.x*1.4f/4, boxSize.y, 1f);
|
||||||
characterClick.OrSizeX = boxSize.x / characterClick.StartSizeX; // * 2f 因为 radius 是半径,图片的尺寸通常是直径
|
characterClick.OrSizeX = boxSize.x / characterClick.StartSizeX; // * 2f 因为 radius 是半径,图片的尺寸通常是直径
|
||||||
characterClick.OrSizeY = boxSize.y*2 / characterClick.StartSizeY;
|
characterClick.OrSizeY = boxSize.y * 2 / characterClick.StartSizeY;
|
||||||
attackRangeSprite.transform.position = new Vector2(attackRangeSprite.transform.position.x - (characterClick.StartSizeX - characterClick.OrSizeX) / 2, attackRangeSprite.transform.position.y);
|
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;
|
//characterClick.OrSizeY = 1;
|
||||||
Debug.Log("修改图片宽度");
|
Debug.Log("修改图片宽度");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user