修复isvisibleFromCamera剔除错误 新增setcolor方法

This commit is contained in:
yhh
2020-06-19 19:28:14 +08:00
parent d22c5775c2
commit 9bd5a99c81
8 changed files with 51 additions and 6 deletions

View File

@@ -425,6 +425,7 @@ declare class SpriteRenderer extends RenderableComponent {
setSprite(sprite: Sprite): SpriteRenderer; setSprite(sprite: Sprite): SpriteRenderer;
origin: Vector2; origin: Vector2;
setOrigin(origin: Vector2): this; setOrigin(origin: Vector2): this;
setColor(color: number): void;
isVisibleFromCamera(camera: Camera): boolean; isVisibleFromCamera(camera: Camera): boolean;
render(camera: Camera): void; render(camera: Camera): void;
} }

View File

@@ -2026,8 +2026,22 @@ var SpriteRenderer = (function (_super) {
} }
return this; return this;
}; };
SpriteRenderer.prototype.setColor = function (color) {
var colorMatrix = [
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
];
colorMatrix[0] = Math.floor(color / 256 / 256) / 255;
colorMatrix[6] = Math.floor(color / 256 % 256) / 255;
colorMatrix[12] = color % 256 / 255;
var colorFilter = new egret.ColorMatrixFilter(colorMatrix);
this._bitmap.filters = [colorFilter];
};
SpriteRenderer.prototype.isVisibleFromCamera = function (camera) { SpriteRenderer.prototype.isVisibleFromCamera = function (camera) {
this.isVisible = new Rectangle(0, 0, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds); var topLeft = camera.screenToWorldPoint(new Vector2(0, 0));
this.isVisible = new Rectangle(topLeft.x, topLeft.y, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds);
this._bitmap.visible = this.isVisible; this._bitmap.visible = this.isVisible;
return this.isVisible; return this.isVisible;
}; };

File diff suppressed because one or more lines are too long

View File

@@ -100,7 +100,7 @@ class Main extends eui.UILayer {
let sprite = new Sprite(RES.getRes("checkbox_select_disabled_png")); let sprite = new Sprite(RES.getRes("checkbox_select_disabled_png"));
let scene = SceneManager.createScene("main", new MainScene(this)).setActive(); let scene = SceneManager.createScene("main", new MainScene(this)).setActive();
let player = scene.createEntity("player"); let player = scene.createEntity("player");
player.addComponent(new SpriteRenderer()).setSprite(sprite); player.addComponent(new SpriteRenderer()).setSprite(sprite).setColor(0xFF0000);
player.addComponent(new SpawnComponent(EnemyType.worm)); player.addComponent(new SpawnComponent(EnemyType.worm));
player.addComponent(new PlayerController()); player.addComponent(new PlayerController());
player.addComponent(new FollowCamera(player)); player.addComponent(new FollowCamera(player));

View File

@@ -425,6 +425,7 @@ declare class SpriteRenderer extends RenderableComponent {
setSprite(sprite: Sprite): SpriteRenderer; setSprite(sprite: Sprite): SpriteRenderer;
origin: Vector2; origin: Vector2;
setOrigin(origin: Vector2): this; setOrigin(origin: Vector2): this;
setColor(color: number): void;
isVisibleFromCamera(camera: Camera): boolean; isVisibleFromCamera(camera: Camera): boolean;
render(camera: Camera): void; render(camera: Camera): void;
} }

View File

@@ -2026,8 +2026,22 @@ var SpriteRenderer = (function (_super) {
} }
return this; return this;
}; };
SpriteRenderer.prototype.setColor = function (color) {
var colorMatrix = [
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
];
colorMatrix[0] = Math.floor(color / 256 / 256) / 255;
colorMatrix[6] = Math.floor(color / 256 % 256) / 255;
colorMatrix[12] = color % 256 / 255;
var colorFilter = new egret.ColorMatrixFilter(colorMatrix);
this._bitmap.filters = [colorFilter];
};
SpriteRenderer.prototype.isVisibleFromCamera = function (camera) { SpriteRenderer.prototype.isVisibleFromCamera = function (camera) {
this.isVisible = new Rectangle(0, 0, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds); var topLeft = camera.screenToWorldPoint(new Vector2(0, 0));
this.isVisible = new Rectangle(topLeft.x, topLeft.y, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds);
this._bitmap.visible = this.isVisible; this._bitmap.visible = this.isVisible;
return this.isVisible; return this.isVisible;
}; };

File diff suppressed because one or more lines are too long

View File

@@ -49,8 +49,23 @@ class SpriteRenderer extends RenderableComponent {
return this; return this;
} }
public setColor(color: number){
let colorMatrix = [
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
];
colorMatrix[0] = Math.floor(color / 256 / 256) / 255;
colorMatrix[6] = Math.floor(color / 256 % 256) / 255;
colorMatrix[12] = color % 256 / 255;
let colorFilter = new egret.ColorMatrixFilter(colorMatrix);
this._bitmap.filters = [colorFilter];
}
public isVisibleFromCamera(camera: Camera): boolean{ public isVisibleFromCamera(camera: Camera): boolean{
this.isVisible = new Rectangle(0, 0, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds); let topLeft = camera.screenToWorldPoint(new Vector2(0, 0));
this.isVisible = new Rectangle(topLeft.x, topLeft.y, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds);
this._bitmap.visible = this.isVisible; this._bitmap.visible = this.isVisible;
return this.isVisible; return this.isVisible;
} }