修复 collsionTriggerHelper 遍历问题
This commit is contained in:
@@ -3084,14 +3084,13 @@ var ColliderTriggerHelper = (function () {
|
|||||||
for (var i = 0; i < colliders.length; i++) {
|
for (var i = 0; i < colliders.length; i++) {
|
||||||
var collider = colliders[i];
|
var collider = colliders[i];
|
||||||
var neighbors = Physics.boxcastBroadphase(collider.bounds, collider.collidesWithLayers);
|
var neighbors = Physics.boxcastBroadphase(collider.bounds, collider.collidesWithLayers);
|
||||||
for (var i_2 = 0; i_2 < neighbors.length; i_2++) {
|
for (var j = 0; j < neighbors.length; j++) {
|
||||||
var neighbor = neighbors[i_2];
|
var neighbor = neighbors[j];
|
||||||
if (!collider.isTrigger && !neighbor.isTrigger)
|
if (!collider.isTrigger && !neighbor.isTrigger)
|
||||||
continue;
|
continue;
|
||||||
if (collider.overlaps(neighbor)) {
|
if (collider.overlaps(neighbor)) {
|
||||||
var pair = new Pair(collider, neighbor);
|
var pair = new Pair(collider, neighbor);
|
||||||
var shouldReportTriggerEvent = !this._activeTriggerIntersections.contains(pair) &&
|
var shouldReportTriggerEvent = !this._activeTriggerIntersections.contains(pair) && !this._previousTriggerIntersections.contains(pair);
|
||||||
!this._previousTriggerIntersections.contains(pair);
|
|
||||||
if (shouldReportTriggerEvent)
|
if (shouldReportTriggerEvent)
|
||||||
this.notifyTriggerListeners(pair, true);
|
this.notifyTriggerListeners(pair, true);
|
||||||
this._activeTriggerIntersections.push(pair);
|
this._activeTriggerIntersections.push(pair);
|
||||||
@@ -3134,12 +3133,12 @@ var ColliderTriggerHelper = (function () {
|
|||||||
this._tempTriggerList.length = 0;
|
this._tempTriggerList.length = 0;
|
||||||
if (collisionPair.second.entity) {
|
if (collisionPair.second.entity) {
|
||||||
collisionPair.second.entity.getComponents("ITriggerListener", this._tempTriggerList);
|
collisionPair.second.entity.getComponents("ITriggerListener", this._tempTriggerList);
|
||||||
for (var i_3 = 0; i_3 < this._tempTriggerList.length; i_3++) {
|
for (var i_2 = 0; i_2 < this._tempTriggerList.length; i_2++) {
|
||||||
if (isEntering) {
|
if (isEntering) {
|
||||||
this._tempTriggerList[i_3].onTriggerEnter(collisionPair.first, collisionPair.second);
|
this._tempTriggerList[i_2].onTriggerEnter(collisionPair.first, collisionPair.second);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this._tempTriggerList[i_3].onTriggerExit(collisionPair.first, collisionPair.second);
|
this._tempTriggerList[i_2].onTriggerExit(collisionPair.first, collisionPair.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this._tempTriggerList.length = 0;
|
this._tempTriggerList.length = 0;
|
||||||
|
|||||||
@@ -59,6 +59,14 @@ class Main extends eui.UILayer {
|
|||||||
|
|
||||||
private updateFrame(evt: egret.Event){
|
private updateFrame(evt: egret.Event){
|
||||||
Main.emitter.emit(CoreEmitterType.Update, evt);
|
Main.emitter.emit(CoreEmitterType.Update, evt);
|
||||||
|
let activeScene = SceneManager.getActiveScene();
|
||||||
|
if (activeScene){
|
||||||
|
let player = activeScene.findEntity("player");
|
||||||
|
if (player){
|
||||||
|
let mover = player.getComponent<Mover>(Mover);
|
||||||
|
mover.move(new Vector2(0, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async runGame() {
|
private async runGame() {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ class SpawnComponent extends Component implements ITriggerListener {
|
|||||||
|
|
||||||
public update() {
|
public update() {
|
||||||
// console.log("update");
|
// console.log("update");
|
||||||
this.entity.getComponent<Mover>(Mover).move(new Vector2(0, 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public onTriggerEnter(other: Collider, local: Collider){
|
public onTriggerEnter(other: Collider, local: Collider){
|
||||||
|
|||||||
@@ -3084,14 +3084,13 @@ var ColliderTriggerHelper = (function () {
|
|||||||
for (var i = 0; i < colliders.length; i++) {
|
for (var i = 0; i < colliders.length; i++) {
|
||||||
var collider = colliders[i];
|
var collider = colliders[i];
|
||||||
var neighbors = Physics.boxcastBroadphase(collider.bounds, collider.collidesWithLayers);
|
var neighbors = Physics.boxcastBroadphase(collider.bounds, collider.collidesWithLayers);
|
||||||
for (var i_2 = 0; i_2 < neighbors.length; i_2++) {
|
for (var j = 0; j < neighbors.length; j++) {
|
||||||
var neighbor = neighbors[i_2];
|
var neighbor = neighbors[j];
|
||||||
if (!collider.isTrigger && !neighbor.isTrigger)
|
if (!collider.isTrigger && !neighbor.isTrigger)
|
||||||
continue;
|
continue;
|
||||||
if (collider.overlaps(neighbor)) {
|
if (collider.overlaps(neighbor)) {
|
||||||
var pair = new Pair(collider, neighbor);
|
var pair = new Pair(collider, neighbor);
|
||||||
var shouldReportTriggerEvent = !this._activeTriggerIntersections.contains(pair) &&
|
var shouldReportTriggerEvent = !this._activeTriggerIntersections.contains(pair) && !this._previousTriggerIntersections.contains(pair);
|
||||||
!this._previousTriggerIntersections.contains(pair);
|
|
||||||
if (shouldReportTriggerEvent)
|
if (shouldReportTriggerEvent)
|
||||||
this.notifyTriggerListeners(pair, true);
|
this.notifyTriggerListeners(pair, true);
|
||||||
this._activeTriggerIntersections.push(pair);
|
this._activeTriggerIntersections.push(pair);
|
||||||
@@ -3134,12 +3133,12 @@ var ColliderTriggerHelper = (function () {
|
|||||||
this._tempTriggerList.length = 0;
|
this._tempTriggerList.length = 0;
|
||||||
if (collisionPair.second.entity) {
|
if (collisionPair.second.entity) {
|
||||||
collisionPair.second.entity.getComponents("ITriggerListener", this._tempTriggerList);
|
collisionPair.second.entity.getComponents("ITriggerListener", this._tempTriggerList);
|
||||||
for (var i_3 = 0; i_3 < this._tempTriggerList.length; i_3++) {
|
for (var i_2 = 0; i_2 < this._tempTriggerList.length; i_2++) {
|
||||||
if (isEntering) {
|
if (isEntering) {
|
||||||
this._tempTriggerList[i_3].onTriggerEnter(collisionPair.first, collisionPair.second);
|
this._tempTriggerList[i_2].onTriggerEnter(collisionPair.first, collisionPair.second);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this._tempTriggerList[i_3].onTriggerExit(collisionPair.first, collisionPair.second);
|
this._tempTriggerList[i_2].onTriggerExit(collisionPair.first, collisionPair.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this._tempTriggerList.length = 0;
|
this._tempTriggerList.length = 0;
|
||||||
|
|||||||
@@ -19,15 +19,14 @@ class ColliderTriggerHelper {
|
|||||||
let collider = colliders[i];
|
let collider = colliders[i];
|
||||||
|
|
||||||
let neighbors = Physics.boxcastBroadphase(collider.bounds, collider.collidesWithLayers);
|
let neighbors = Physics.boxcastBroadphase(collider.bounds, collider.collidesWithLayers);
|
||||||
for (let i = 0; i < neighbors.length; i++) {
|
for (let j = 0; j < neighbors.length; j++) {
|
||||||
let neighbor = neighbors[i];
|
let neighbor = neighbors[j];
|
||||||
if (!collider.isTrigger && !neighbor.isTrigger)
|
if (!collider.isTrigger && !neighbor.isTrigger)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (collider.overlaps(neighbor)) {
|
if (collider.overlaps(neighbor)) {
|
||||||
let pair = new Pair<Collider>(collider, neighbor);
|
let pair = new Pair<Collider>(collider, neighbor);
|
||||||
let shouldReportTriggerEvent = !this._activeTriggerIntersections.contains(pair) &&
|
let shouldReportTriggerEvent = !this._activeTriggerIntersections.contains(pair) && !this._previousTriggerIntersections.contains(pair);
|
||||||
!this._previousTriggerIntersections.contains(pair);
|
|
||||||
|
|
||||||
if (shouldReportTriggerEvent)
|
if (shouldReportTriggerEvent)
|
||||||
this.notifyTriggerListeners(pair, true);
|
this.notifyTriggerListeners(pair, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user