修复Vector2.zero引起的引用混乱问题

This commit is contained in:
yhh
2020-08-26 19:56:48 +08:00
parent 1997b3f348
commit e81f98ff17
33 changed files with 1663 additions and 4645 deletions

View File

@@ -10,7 +10,7 @@ module samples {
private _pixelShape2: egret.Shape;
private _lineShape: egret.Shape;
private _pixelShape3: egret.Shape;
private _delayTime = 1;
private _delayTime = 0.2;
private _pressTime = 0;
private _canTouch = true;

View File

@@ -2,14 +2,12 @@ module samples {
import CircleCollider = es.CircleCollider;
import Flags = es.Flags;
import SpriteRenderer = es.SpriteRenderer;
import ProjectileHitDetector = es.ProjectileHitDetector;
import FollowCamera = es.FollowCamera;
export class NinjaAdventureScene extends SampleScene {
constructor() {
super(true, true);
}
public initialize(): void {
super.initialize();
public async onStart() {
super.onStart();
let playerEntity = this.createEntity("player");
playerEntity.position = new es.Vector2(256, 224);
@@ -21,12 +19,22 @@ module samples {
// 移动到第1层 保证自己的图层不会如果增加攻击方式则不会攻击到自身
Flags.setFlagExclusive(collider.physicsLayer, 1);
this.camera.entity.addComponent(new FollowCamera(playerEntity));
this.content.loadRes("moon_png").then(moonTexture => {
let moonEntity = this.createEntity("moon");
moonEntity.position = new es.Vector2(412, 460);
moonEntity.addComponent(new SpriteRenderer(moonTexture));
moonEntity.addComponent(new ProjectileHitDetector());
moonEntity.addComponent(new CircleCollider());
});
}
public update(){
super.update();
this.findEntity("player").position.x -= es.Time.deltaTime * 10;
this.findEntity("player").position.y -= es.Time.deltaTime * 10;
}
}
}

View File

@@ -0,0 +1,30 @@
module es {
/**
* 简单的组件,可以检测它是否被弹丸击中。当被击中时,它会闪烁并在被击中一定次数后自我毁灭。
*/
export class ProjectileHitDetector extends Component implements ITriggerListener{
public hitsUntilDead: number = 10;
public _hitCounter: number;
public _sprite: SpriteRenderer;
public onAddedToEntity(): void {
this._sprite = this.entity.getComponent<SpriteRenderer>(SpriteRenderer);
}
public onTriggerEnter(other: es.Collider, local: es.Collider): any {
this._hitCounter ++;
if (this.hitsUntilDead >= this.hitsUntilDead){
this.entity.destroy();
return;
}
this._sprite.color = 0xFF0000;
Core.schedule(0.1, false, this, timer => {
this._sprite.color = 0x000000;
});
}
public onTriggerExit(other: es.Collider, local: es.Collider): any {
}
}
}