|
|
@@ -296,9 +296,6 @@ export class WeaponBullet extends Component {
|
|
|
initData.firePosition
|
|
|
);
|
|
|
|
|
|
- // 设置子弹的外观(SpriteFrame 与武器方块一致)
|
|
|
- this.setupBulletSprite();
|
|
|
-
|
|
|
// --- 额外偏移 ---
|
|
|
// 若子弹在生成时与发射方块碰撞(位置重叠), 会立刻触发碰撞事件导致被销毁。
|
|
|
// 因此在初始化完弹道后, 将子弹沿发射方向平移一小段距离(默认 30 像素左右)。
|
|
|
@@ -569,6 +566,7 @@ export class WeaponBullet extends Component {
|
|
|
// 先尝试获取当前节点上的 Sprite 组件,若不存在则在子节点中查找
|
|
|
const sprite: Sprite | null = this.getComponent(Sprite) || this.node.getComponentInChildren(Sprite);
|
|
|
if (!sprite) {
|
|
|
+ console.log("未找到Sprite组件");
|
|
|
// 子弹预制体可能没有Sprite组件,直接返回
|
|
|
return;
|
|
|
}
|
|
|
@@ -576,42 +574,34 @@ export class WeaponBullet extends Component {
|
|
|
// weaponConfig.visualConfig.weaponSprites 中存储了各尺寸的SpriteFrame路径
|
|
|
const spriteConfig = (this.weaponConfig as any)?.visualConfig?.weaponSprites;
|
|
|
if (!spriteConfig) {
|
|
|
+ console.log("未找到武器Sprite配置");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// 依次尝试新的形状ID键值
|
|
|
const spritePath = spriteConfig['I'] || spriteConfig['H-I'] || spriteConfig['L'] || spriteConfig['S'] || spriteConfig['D-T'];
|
|
|
if (!spritePath) {
|
|
|
+ console.log("未找到匹配的SpriteFrame路径");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
const framePath = `${spritePath}/spriteFrame`;
|
|
|
resources.load(framePath, SpriteFrame, (err, spriteFrame) => {
|
|
|
if (err) {
|
|
|
+ console.error(`加载子弹SpriteFrame失败: ${err}`);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ console.log("设置子弹外观");
|
|
|
// Add comprehensive null safety checks before setting spriteFrame
|
|
|
if (sprite && sprite.isValid &&
|
|
|
this.node && this.node.isValid &&
|
|
|
spriteFrame && spriteFrame.isValid) {
|
|
|
sprite.spriteFrame = spriteFrame;
|
|
|
-
|
|
|
+ console.log("设置子弹SpriteFrame成功");
|
|
|
// === 子弹大小控制:保持prefab预设的大小 ===
|
|
|
- const uiTransform = sprite.node.getComponent(UITransform);
|
|
|
- if (uiTransform) {
|
|
|
- const originalSize = spriteFrame.originalSize || null;
|
|
|
- if (originalSize) {
|
|
|
- // 设置为原图大小的0.5倍,确保子弹不会过大
|
|
|
- uiTransform.setContentSize(originalSize.width * 0.45, originalSize.height * 0.45);
|
|
|
- } else {
|
|
|
- // 若无法获取原尺寸,退化为缩放节点
|
|
|
- sprite.node.setScale(sprite.node.scale.x * 0.45, sprite.node.scale.y * 0.45, sprite.node.scale.z);
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 没有 UITransform,直接缩放节点
|
|
|
- sprite.node.setScale(sprite.node.scale.x * 0.45, sprite.node.scale.y * 0.45, sprite.node.scale.z);
|
|
|
- }
|
|
|
+ sprite.node.setScale(sprite.node.scale.x * 0.45, sprite.node.scale.y * 0.45, sprite.node.scale.z);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
);
|