请教一个坐标问题,总是错位半个屏幕是为什么呢?

大家好,我是初学者,尝试做一个2D的坦克游戏,现在已经实现了移动,该实现开火了。
现在想把坦克子弹放在 bullet_pos 的位置,用 UITransform 转换成世界坐标之后,子弹却出现在了右上角,大约歪了半个屏幕,请问要怎么转换才对呀?

(creator 版本是3.6)




图片中的代码如下:

    fire() {
        let newBullet = instantiate(this.bulletPre)
        const bulletPos = this.uiTransform.convertToWorldSpaceAR(Vec3.ZERO)
        newBullet.setPosition(bulletPos)
        newBullet.angle = this.node.angle + this.cannon.angle
        newBullet.setParent(this.canvas)
    }
    onLoad(){
        // 子弹初始位置
        this.uiTransform = this.bulletPos.getComponent(UITransform)
        // 开火
        if (this.fireButton) {
            this.fireButton.node.on(NodeEventType.TOUCH_START, () => {
                this.fire()
                this.firePreparing = true
            })
            this.fireButton.node.on(NodeEventType.TOUCH_END, () => {
                this.firePreparing = false
            })
            this.fireButton.node.on(NodeEventType.TOUCH_CANCEL, () => {
                this.firePreparing = false
            })
        }
    }

一个原点在左下角,一个原点在屏幕中心

发子弹为什么要UI转世界呢,直接获取坦克的世界坐标,子弹位置就是坦克位置前方一点点就行。

我搞懂了,因为是 setParent 把子弹放到 canvas 下面,所以要把坐标转换成 canvas 的本地坐标。