コード例 #1
0
        protected void checkForCollision(CollisionResult res)
        {
            //Find tile collision detects
            TiledTile tile = _mapComponent.getTileAtWorldPosition(entity.position + new Vector2(-16) * res.normal);

            if (tile != null && tile.tilesetTile != null && tile.tilesetTile.isDestructable)   //Destroy tile if isDestructable
            {
                _mapComponent.collisionLayer.removeTile(tile.x, tile.y);
                _mapComponent.removeColliders();
                _mapComponent.addColliders();
            }
            else
            {
                entity.destroy();
            }
        }
コード例 #2
0
ファイル: PlayerDashMover.cs プロジェクト: fusspawn/Nez
        void IUpdatable.update()
        {
            entity.scene.camera.position = new Vector2(entity.scene.sceneRenderTargetSize.X / 2, entity.scene.sceneRenderTargetSize.Y / 2);
            if (_isGrounded)
            {
                if (Input.isKeyPressed(Keys.Left))
                {
                    _moveDir.X = -1f;
                    if (!canMove())
                    {
                        _moveDir.X = 0;
                        return;
                    }
                    entity.getComponent <RenderableComponent>().flipY = false;
                    entity.transform.rotationDegrees = 90f;
                }
                else if (Input.isKeyPressed(Keys.Right))
                {
                    _moveDir.X = 1f;
                    if (!canMove())
                    {
                        _moveDir.X = 0;
                        return;
                    }
                    entity.getComponent <RenderableComponent>().flipY = false;
                    entity.transform.rotationDegrees = -90f;
                }
                else if (Input.isKeyPressed(Keys.Up))
                {
                    _moveDir.Y = -1f;
                    if (!canMove())
                    {
                        _moveDir.Y = 0;
                        return;
                    }
                    entity.getComponent <RenderableComponent>().flipY = true;
                    entity.transform.rotationDegrees = 0f;
                }
                else if (Input.isKeyPressed(Keys.Down))
                {
                    _moveDir.Y = 1f;
                    if (!canMove())
                    {
                        _moveDir.Y = 0;
                        return;
                    }
                    entity.getComponent <RenderableComponent>().flipY = false;
                    entity.transform.rotationDegrees = 0f;
                }
            }


            if (_moveDir != Vector2.Zero)
            {
                var             movement = _moveDir * _speed * Time.deltaTime;
                CollisionResult res;
                if (_mover.move(movement, out res))
                {
                    var pos  = entity.transform.position + new Vector2(-16) * res.normal;
                    var tile = _tiledMapComponent.getTileAtWorldPosition(pos);

                    if (!_destroyedTile && tile != null && tile.tilesetTile == null)
                    {
                        _destroyedTile = true;
                        _tiledMapComponent.collisionLayer.removeTile(tile.x, tile.y);
                        _tiledMapComponent.removeColliders();
                        _tiledMapComponent.addColliders();
                    }
                    else
                    {
                        _moveDir       = Vector2.Zero;
                        _isGrounded    = true;
                        _destroyedTile = false;
                        entity.getComponent <CameraShake>().shake(8, 0.8f);
                    }
                }
                else
                {
                    _isGrounded = false;
                }
            }
        }