关于3D项目中方向的问题

有一个功能 想让攻击的特效向着玩家移动
当我这样写的时候
@ccclass(‘Genki_bomb’)

export class Genki_bomb extends Component {

private speed: number = 1;

private targetPosition: Vec3 = new Vec3(); // 目标位置

private direction = new Vec3();

update(deltaTime: number) {

    // 计算当前位置和目标位置之间的方向向量

    Vec3.subtract(this.direction, this.targetPosition, this.node.position);

    Vec3.normalize(this.direction, this.direction);

    // 计算当前帧应该移动的距离

    const distance = this.speed * deltaTime;

    // 计算移动的增量向量

    const deltaPosition = new Vec3();

    Vec3.multiplyScalar(deltaPosition, this.direction, distance);

    // 计算新的位置

    const newPosition = new Vec3();

    Vec3.add(newPosition, this.node.position, deltaPosition);

    // 更新节点位置

    this.node.setPosition(newPosition);

}

public setPlayer(position: Vec3) {

    this.targetPosition.set(position);

}

}
是可以正常运行的
但是改为这样
@ccclass(‘Genki_bomb’)

export class Genki_bomb extends Component {

private speed: number = 1;

private targetPosition: Vec3 = new Vec3(); // 目标位置

private direction = new Vec3();

update(deltaTime: number) {

   

    // 计算当前帧应该移动的距离

    const distance = this.speed * deltaTime;

    // 计算移动的增量向量

    const deltaPosition = new Vec3();

    Vec3.multiplyScalar(deltaPosition, this.direction, distance);

    // 计算新的位置

    const newPosition = new Vec3();

    Vec3.add(newPosition, this.node.position, deltaPosition);

    // 更新节点位置

    this.node.setPosition(newPosition);

}

public setPlayer(position: Vec3) {

    this.targetPosition.set(position);

    // 计算当前位置和目标位置之间的方向向量

    Vec3.subtract(this.direction, this.targetPosition, this.node.position);

    Vec3.normalize(this.direction, this.direction);

}

}
移动的方向就乱了起来
实在搞不明白是哪里的问题

因该是 你需要再执行Update赋值位置前去执行方向的运算 你的执行顺序不固定导致的这个问题吧

我在生成这个node的时候已经有赋值了 你的意思是指node创建后 必须先update一次 才会更新出他的位置吗

我不知道你刷新方向的逻辑是不是只执行一次 如果你的目标对象会动 你就应该放到Update里去刷 不然你就只保存了 创建时的方向

我就是只想保存创建时的方向 但是现在的问题就是这个方向是错误的