//触发时加入子级
onTriggerEnter(event: ITriggerEvent) {
if (event.otherCollider.node == this.cc2) {
this.cc2.getComponent(CharacterController).enabled = false
this.cc2.getComponent(CapsuleCollider).enabled = true
if (this.cc2.parent != this.node) {
this.xx1 = this.cc2.position
//克隆自身角度
this.xx3 = this.cc2.eulerAngles.clone()
this.node.inverseTransformPoint(this.zz1, this.xx1)
this.node.addChild(this.cc2)
}
if (this.cc2.parent == this.node) {
this.cc2.setPosition(this.zz1)
//加入时用自身角度减去父级以旋转角度以匹配本地坐标系下的角度
this.cc2.setRotationFromEuler(this.xx3.x, this.xx3.y - this.node.eulerAngles.y, this.xx3.z)
}
}
}
//触发时移出子级
onTriggerExit(event: ITriggerEvent) {
if (event.otherCollider.node == this.cc2) {
this.cc2.getComponent(CharacterController).enabled = true
this.cc2.getComponent(CapsuleCollider).enabled = false
if (this.cc2.parent != this.node.parent) {
//克隆世界坐标系的位置
this.xx2 = this.cc2.worldPosition.clone()
this.xx3 = this.cc2.eulerAngles.clone()
//将CC2从子节点移出到父级
this.node.parent.addChild(this.cc2)
}
if (this.cc2.parent == this.node.parent) {
//将克隆的世界坐标系位置赋值
this.cc2.setPosition(this.xx2)
//移出时用自身角度加上父级以旋转角度以匹配世界坐标系下的角度
this.cc2.setRotationFromEuler(this.xx3.x, this.xx3.y + this.node.eulerAngles.y, this.xx3.z)
}
}
}