- Creator 版本: 3.3.0
在将2.4.5的项目升到3.3.0的之后,碰到一个bug,排查了很久,终于找到了问题所在,先贴代码
enum DirType {
none,
left,
right
}
@ccclass(‘Test’)
export class Test extends Component {
onLoad() {
systemEvent.on(SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
}
onDisable() {
systemEvent.off(SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
}
private getDirType(dir: Vec3) {
var dirType = dir.normalize().x > 0 ? DirType.right : DirType.left;
return dirType;
}
private onKeyUp(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.KEY_A:
var movePos = new Vec3(100, 100, 0);
error("movePos=", movePos);
var currPos = this.node.getComponent(UITransformComponent).convertToWorldSpaceAR(Vec3.ZERO);
var dir = movePos.subtract(currPos);
error("movePos=", movePos);
var dirType: DirType = this.getDirType(dir.normalize());
error("movePos=", movePos);
break;
}
}
}
再看运行结果:
问题的根源在于subtract这个函数,为什么我用当前向量减去一个向量,当前向量的值却改变了呢,难道不应该是用一个新的向量去接受它们两个运算之后的结果,然后返回这个新的向量吗。我吐了

