1. 修正了相机在变焦时不能保持在目标中心的问题

2. 增加检查,以确保碰撞器被触发时enabled也开启
This commit is contained in:
yhh
2020-07-20 13:44:26 +08:00
parent dccd4e21b6
commit e76d5815f2
9 changed files with 44 additions and 11 deletions

View File

@@ -1301,6 +1301,9 @@ declare class Vector2Ext {
static transform(sourceArray: Vector2[], matrix: Matrix2D, destinationArray: Vector2[]): void;
static round(vec: Vector2): Vector2;
}
declare class WebGLUtils {
static getContext(): CanvasRenderingContext2D;
}
declare class Layout {
clientArea: Rectangle;
safeArea: Rectangle;

View File

@@ -1651,8 +1651,8 @@ var Camera = (function (_super) {
Camera.prototype.update = function () {
var cameraBounds = new Rectangle(0, 0, SceneManager.stage.stageWidth, SceneManager.stage.stageHeight);
var halfScreen = Vector2.multiply(new Vector2(cameraBounds.width, cameraBounds.height), new Vector2(0.5));
this._worldSpaceDeadZone.x = this.position.x - halfScreen.x + this.deadzone.x + this.focusOffset.x;
this._worldSpaceDeadZone.y = this.position.y - halfScreen.y + this.deadzone.y + this.focusOffset.y;
this._worldSpaceDeadZone.x = this.position.x - halfScreen.x * SceneManager.scene.scaleX + this.deadzone.x + this.focusOffset.x;
this._worldSpaceDeadZone.y = this.position.y - halfScreen.y * SceneManager.scene.scaleY + this.deadzone.y + this.focusOffset.y;
this._worldSpaceDeadZone.width = this.deadzone.width;
this._worldSpaceDeadZone.height = this.deadzone.height;
if (this.targetEntity)
@@ -2156,7 +2156,7 @@ var ProjectileMover = (function (_super) {
var neighbors = Physics.boxcastBroadphase(this._collider.bounds, this._collider.collidesWithLayers);
for (var i = 0; i < neighbors.colliders.length; i++) {
var neighbor = neighbors.colliders[i];
if (this._collider.overlaps(neighbor)) {
if (this._collider.overlaps(neighbor) && neighbor.enabled) {
didCollide = true;
this.notifyTriggerListeners(this._collider, neighbor);
}
@@ -6416,6 +6416,15 @@ var Vector2Ext = (function () {
};
return Vector2Ext;
}());
var WebGLUtils = (function () {
function WebGLUtils() {
}
WebGLUtils.getContext = function () {
var canvas = document.getElementsByTagName('canvas')[0];
return canvas.getContext('2d');
};
return WebGLUtils;
}());
var Layout = (function () {
function Layout() {
this.clientArea = new Rectangle(0, 0, SceneManager.stage.stageWidth, SceneManager.stage.stageHeight);

File diff suppressed because one or more lines are too long

View File

@@ -164,8 +164,8 @@ class Camera extends Component {
public update(){
let cameraBounds = new Rectangle(0, 0, SceneManager.stage.stageWidth, SceneManager.stage.stageHeight);
let halfScreen = Vector2.multiply(new Vector2(cameraBounds.width, cameraBounds.height), new Vector2(0.5));
this._worldSpaceDeadZone.x = this.position.x - halfScreen.x + this.deadzone.x + this.focusOffset.x;
this._worldSpaceDeadZone.y = this.position.y - halfScreen.y + this.deadzone.y + this.focusOffset.y;
this._worldSpaceDeadZone.x = this.position.x - halfScreen.x * SceneManager.scene.scaleX + this.deadzone.x + this.focusOffset.x;
this._worldSpaceDeadZone.y = this.position.y - halfScreen.y * SceneManager.scene.scaleY + this.deadzone.y + this.focusOffset.y;
this._worldSpaceDeadZone.width = this.deadzone.width;
this._worldSpaceDeadZone.height = this.deadzone.height;

View File

@@ -29,7 +29,7 @@ class ProjectileMover extends Component {
let neighbors = Physics.boxcastBroadphase(this._collider.bounds, this._collider.collidesWithLayers);
for (let i = 0; i < neighbors.colliders.length; i ++){
let neighbor = neighbors.colliders[i];
if (this._collider.overlaps(neighbor)){
if (this._collider.overlaps(neighbor) && neighbor.enabled){
didCollide = true;
this.notifyTriggerListeners(this._collider, neighbor);
}

View File

@@ -0,0 +1,9 @@
class WebGLUtils {
/**
* 获取webgl context
*/
public static getContext(){
const canvas = document.getElementsByTagName('canvas')[0];
return canvas.getContext('2d');
}
}