Пример #1
0
    public override void Initialize(Vector2 position, int size = 8)
    {
        base.Initialize(Position, size: size);
        SetCollisionMaskBit(1, true);
        CollisionLayer = 0;
        CollisionShape2D hurtCollider = new CollisionShape2D();
        RectangleShape2D hurtBoxShape = new RectangleShape2D();

        _hurtArea.SetCollisionLayerBit(0, false);
        _hurtArea.SetCollisionLayerBit(2, true);
        _hurtArea.SetCollisionMaskBit(19, true);
        _hurtArea.SetCollisionMaskBit(0, false);
        _hurtArea.Name       = "HurtBox";
        hurtBoxShape.Extents = new Vector2(size / 2f, size / 2f);
        hurtCollider.Shape   = hurtBoxShape;
        _hurtArea.AddChild(hurtCollider);
        AddChild(_hurtArea);


        CollisionShape2D alertCollider = new CollisionShape2D();
        CircleShape2D    alertBoxShape = new CircleShape2D();

        _alertArea.Name = "AlertCircle";
        _alertArea.SetCollisionMaskBit(19, true);
        _alertArea.SetCollisionMaskBit(0, false);
        _alertArea.CollisionLayer = 0;
        alertBoxShape.Radius      = 35;
        alertCollider.Shape       = alertBoxShape;
        _alertArea.AddChild(alertCollider);
        AddChild(_alertArea);

        _alertArea.Connect("area_entered", this, "_OnPlayerEnter");
        _hurtArea.Connect("area_entered", this, "_OnPlayerTouch");
        AddToGroup("Enemies");
    }
Пример #2
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        base._Ready();

        var circle = new CircleShape2D();

        ((CollisionShape2D)GetNode("DetectRadius/CollisionShape2D")).Shape = circle;
        ((CircleShape2D)((CollisionShape2D)GetNode("DetectRadius/CollisionShape2D")).Shape).Radius = DetectRadius;
    }
    private void AddCollider()
    {
        collisionShape = new CollisionShape2D();
        CircleShape2D circleShape = new CircleShape2D();

        circleShape.Radius   = physics.Physicist.Size;
        collisionShape.Shape = circleShape;
        AddChild(collisionShape);
    }
Пример #4
0
        public override void UpdateTransforms()
        {
            CircleShape2D targetCircle = _data.TargetCircle;
            CircleShape2D borderCircle = _data.BorderCircle;

            borderCircle.Center          = targetCircle.Center;
            borderCircle.RotationDegrees = targetCircle.RotationDegrees;
            borderCircle.Radius          = targetCircle.Radius;
        }
Пример #5
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        lvl                = (level)GetNode("/root/level");
        velocity           = new Vector2(velocity_x, velocity_y);
        collision_shape_2d = GetNode <CollisionShape2D>("collision_shape_2d");

        CircleShape2D shape = new CircleShape2D();

        shape.Radius             = radius;
        collision_shape_2d.Shape = shape;
    }
Пример #6
0
    private void UpdateDetectionRadius()
    {
        if (detectionShape == null)
        {
            return;
        }

        CircleShape2D shape = (CircleShape2D)detectionShape.Shape;

        shape.Radius = detectionRadius;
    }
Пример #7
0
    public override void _Ready()
    {
        towerRange        = GetNode("Detection Enemy").GetNode <CollisionShape2D>("Range").GetShape() as CircleShape2D;
        towerRange.Radius = range;

        GD.Print(towerRange.GetRadius(), " vs ", range);

        // shootTimer = rateOfFire;

        anim = FindNode("AnimationPlayer") as AnimationPlayer;
        anim.Play("idle");
    }
Пример #8
0
    private CollisionShape2D CreateReadiusArea(Vector2 position, int radius)
    {
        var area = new CollisionShape2D();

        area.Position = position;
        var circle = new CircleShape2D();

        circle.Radius = radius;
        area.Shape    = circle;

        return(area);
    }
Пример #9
0
        public override void _Ready()
        {
            _collisionShape         = GetNode <CollisionShape2D>(collisionShapeNodePath);
            _explosionCollisionArea = GetNode <Area2D>(explosionCollisionAreaNodePath);

            _explosionCollisionArea.Connect("body_entered", this, nameof(HandleBodyEntered));
            _explosionCollisionArea.Connect("body_exited", this, nameof(HandleBodyExited));

            CircleShape2D collisionShape = (CircleShape2D)_collisionShape.GetShape();

            collisionShape.SetRadius(explosionRadius);
        }
Пример #10
0
    public override void _Ready()
    {
        _parent  = GetParent();
        GunTimer = (Timer)GetNode("Timer");
        GunTimer.Start();
        var circle = new CircleShape2D();

        circle.Radius = DetectRadius;
        var radius = (CollisionShape2D)GetNode("DetectRadius/CollisionShape2D");

        radius.Shape = circle;
        _enemyTurret = (Sprite)GetNode("Turret");
    }
Пример #11
0
            public override void _Ready()
            {
                var shape = new CircleShape2D()
                {
                    Radius = Radius
                };
                var collisionShape = new CollisionShape2D()
                {
                    Shape = shape
                };

                AddChild(collisionShape);
            }
Пример #12
0
    // Ready
    public override void _Ready()
    {
        // Call base class _Ready first
        base._Ready();

        _parent = GetParent() as PathFollow2D;

        // Set the detect radius
        CircleShape2D circle = new CircleShape2D();

        circle.Radius = this.DetectRadius;
        GetNode <CollisionShape2D>("DetectRadius/CollisionShape2D").Shape = circle;
    }
Пример #13
0
    public override void _Ready()
    {
        EnemyGunTimer          = (Timer)GetNode("GunTimer");
        EnemyGunTimer.WaitTime = GunCoolDown;
        Parent      = GetParent();
        EnemyTurret = (Sprite)GetNode("Turret");
        var circle = new CircleShape2D();

        circle.Radius = DetectRadius;
        var detectRadius = (CollisionShape2D)GetNode("DetectRadius/CollisionShape2D");

        detectRadius.Shape = circle;
    }
Пример #14
0
    public override void _Ready()
    {
        AreaOfInfluence = GetNode <Area2D>("AreaOfInfluence");
        AreaOfInfluence.Connect("body_entered", this, "UpdateInfluence");
        CollisionShape2D AoICollision = GetNode <CollisionShape2D>("AreaOfInfluence/CollisionShape2D");

        CircleShape2D AoIShape = new CircleShape2D();

        AoIShape.Radius = Gravity * 1000;

        AoICollision.Shape = AoIShape;

        InfluencedBodies = AreaOfInfluence.GetOverlappingBodies();
        CallDeferred("UpdateInfluence", this);
    }
Пример #15
0
    private void OnAsteroidImpact(int asteroidId, Vector2 impactPoint, int explosionRadius)
    {
        var explosionArea = new Area2D();
        var shape         = new CircleShape2D();

        shape.Radius = explosionRadius;

        var collision = new CollisionShape2D();

        collision.Shape = shape;

        explosionArea.AddChild(collision);
        explosionArea.GlobalPosition = impactPoint;
        CallDeferred(nameof(ImpactDeferred), explosionArea);
    }
Пример #16
0
    public override void _Ready()
    {
        parent = GetParent() as Node2D;
        detect = (Area2D)GetNode("DetectRadius");
        var col    = (CollisionShape2D)detect.GetNode("CollisionShape2D");
        var circle = new CircleShape2D();

        circle.Radius = DetectRadius;
        col.Shape     = circle;
        lookAhead1    = GetNode("LookAhead1") as RayCast2D;
        lookAhead2    = GetNode("LookAhead2") as RayCast2D;
        detect.Connect("body_entered", this, "OnDetectEntered");
        detect.Connect("body_exited", this, "OnDetectExited");

        base._Ready();
    }
Пример #17
0
    public void Initialize(GameWorld gameWorld, Agent agent, PathFinding pathFinding, float detectRaidus)
    {
        _gameWorld    = gameWorld;
        _agent        = agent;
        _patrolOrigin = _agent.GlobalPosition;
        _pathFinding  = pathFinding;

        SetState(State.PATROL);

        CollisionShape2D detectRadius = (CollisionShape2D)(_playerDetectionZone.GetNode("CollisionShape2D"));

        CircleShape2D shape = new CircleShape2D();

        shape.Radius       = detectRaidus;
        detectRadius.Shape = shape;
    }
Пример #18
0
    public override void _Ready()
    {
        radius        = (FindNode("Range") as CollisionShape2D).GetShape() as CircleShape2D;
        radius.Radius = range;

        anim = FindNode("AnimationPlayer") as AnimationPlayer;

        sprite = FindNode("Sprite") as Sprite;

        explosionArea = FindNode("Explosion Area") as Area2D;

        Random rand = new Random();

        sprite.Rotation = Mathf.Deg2Rad((float)(rand.Next(0, 359)));
        sprite.Scale    = new Vector2(range / 24, range / 24);
    }
Пример #19
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        base._Ready();

        CollisionShape2D detectRadius = (CollisionShape2D)(GetNode("DetectRadius").GetNode("CollisionShape2D"));

        CircleShape2D shape = new CircleShape2D();

        shape.Radius       = DetectRadius;
        detectRadius.Shape = shape;

        isPrimaryWeapon   = false;
        isSecondaryWeapon = false;

        speed = MaxSpeed;

        members = new Godot.Collections.Array();
    }
Пример #20
0
            public override void _Ready()
            {
                bodyCollisionShape = new CollisionShape2D();
                bodyShape          = new RectangleShape2D()
                {
                    Extents = new Vector2(10, 20)
                };
                bodyCollisionShape.Shape = bodyShape;
                AddChild(bodyCollisionShape);

                headCollisionShape = new CollisionShape2D();
                headShape          = new CircleShape2D()
                {
                    Radius = 15
                };
                headCollisionShape.Position = new Vector2(0, -30);
                headCollisionShape.Shape    = headShape;
                AddChild(headCollisionShape);
            }
Пример #21
0
            public override void _Ready()
            {
                circleShape2D = new CircleShape2D()
                {
                    Radius = Radius
                };
                collisionShape2D = new CollisionShape2D()
                {
                    Shape = circleShape2D
                };
                AddChild(collisionShape2D);

                sprite = new SimpleCircleSprite()
                {
                    Radius   = Radius,
                    Modulate = Colors.LightGoldenrod
                };
                AddChild(sprite);
            }
Пример #22
0
    public void Start(Vector2 pos, Vector2 velocity, int size)
    {
        Position = pos;
        _size    = size;
        var    mass = _size * 1.5;
        Sprite rock = GetNode <Sprite>("RockSprite");

        rock.Scale = new Vector2(1, 1) * _scaleFactor * size;
        _radius    = rock.Texture.GetSize().x / 2 * _scaleFactor * size;
        CircleShape2D collisionShape = new CircleShape2D();

        collisionShape.Radius = _radius;
        GetNode <CollisionShape2D>("CollisionShape2D").Shape = collisionShape;
        LinearVelocity = velocity;
        Random r = new Random();

        AngularVelocity = r.Next(-15, 15) / 10f;
        GetNode <Sprite>("Explosion").Scale = new Vector2(0.75f, 0.75f) * _size;
    }
Пример #23
0
    public override void _Ready()
    {
        AreaOfInfluence = GetNode <Area2D>("AreaOfInfluence");
        AreaOfInfluence.Connect("body_entered", this, "UpdateInfluence");
        CollisionShape2D AoICollision = GetNode <CollisionShape2D>("AreaOfInfluence/CollisionShape2D");

        CircleShape2D AoIShape = new CircleShape2D();

        AoIShape.Radius = Gravity * 1000;

        AoICollision.Shape = AoIShape;

        if (OrbitalParentPath != null)
        {
            OrbitalParent = (CelestialBody)GetTree().Root.GetNode <CelestialBody>(OrbitalParentPath);
        }

        influencedBodies = AreaOfInfluence.GetOverlappingBodies();
        CallDeferred("UpdateInfluence", this);
    }
Пример #24
0
    public override void _Ready()
    {
        // GOAL: Find the nearest objective and kill it, otherwise patrol (basic AI)
        // Update detection Radius

        // References
        detectionRange   = GetNode <Area2D>("DetectionRange");
        lightEnemyAttack = GetNode <LightEnemyAttack>("LightEnemyAttack");

        // Update Detection Radius
        detectionShape = detectionRange.GetChild <CollisionShape2D>(0);
        CircleShape2D shape = (CircleShape2D)detectionShape.Shape;

        shape.Radius = detectionRadius;

        // Signals
        detectionRange.Connect("body_entered", this, nameof(OnEnteredDetection));
        lightEnemyAttack.Connect(nameof(LightEnemyAttack.PlayerEnteredRegion), this, nameof(OnEnteredAttackRange));
        lightEnemyAttack.Connect(nameof(LightEnemyAttack.PlayerExitedRegion), this, nameof(OnExittedAttackRange));
        lightEnemyAttack.Connect(nameof(LightEnemyAttack.PlayerHit), this, nameof(OnHitPlayer));
    }
Пример #25
0
    StaticBody2D loadCircBody(StadiumObject stadiumObject, StaticBody2D body)
    {
        CollisionShape2D collider = new CollisionShape2D();

        CircleShape2D shape      = new CircleShape2D();
        CircStruct    circStruct = (CircStruct)stadiumObject.ShapeStruct;

        shape.Radius   = (float)circStruct.Size.X / 2;
        collider.Shape = shape;
        body.AddChild(collider);

        ImageTexture texture = new ImageTexture();

        texture.Load(stadiumObject.TexturePath);
        Sprite sprite = new Sprite();

        sprite.Texture = texture;
        body.AddChild(sprite);

        return(body);
    }
Пример #26
0
    public void Init(Vector2 position, float radius = 100, MODES modes = MODES.LIMITED)
    {
        Position = position;
        _radius  = radius;

        _pivot            = GetNode <Node2D>("Pivot");
        _orbitPosition    = GetNode <Position2D>("Pivot/OrbitPosition");
        _collisionShape2D = GetNode <CollisionShape2D>("CollisionShape2D");
        _sprite           = GetNode <Sprite>("Sprite");
        _animationPlayer  = GetNode <AnimationPlayer>("AnimationPlayer");
        _label            = GetNode <Label>("Label");
        SetMode(modes);

        _circleShape2D        = (CircleShape2D)_collisionShape2D.Shape;
        _circleShape2D.Radius = _radius;
        imgSize = _sprite.Texture.GetSize().x / 2;

        _sprite.Scale = Vector2.One * _radius / imgSize;

        _orbitPosition.Position = new Vector2(_radius + 25, 0);

        _rotationSpeed *= Mathf.Pow(-1, GD.Randi() % 2);
    }
Пример #27
0
    public Pyroblast(Vector2 _direction, Vector2 _pos, int _targetLayer) : base(_direction, _pos, _targetLayer)
    {
        maxPierces        = 3;
        damage            = 1000f;
        knockbackStrength = 200f;
        maxVelocity       = 100;
        acceleration      = 10;
        effectRadius      = 30f;
        cooldown          = 3f;

        Position = Position + direction * 15f;
        Rotate(GetAngleTo(Position + direction));

        VisibilityNotifier2D onScreenNotifier = new VisibilityNotifier2D();

        onScreenNotifier.Connect("screen_exited", this, "queue_free");
        AddChild(onScreenNotifier);

        // Sprite
        sprite.Texture = spriteImage;
        AddChild(sprite);

        // Collider
        hitArea.SetCollisionMaskBit(targetLayer, true);
        AddChild(hitArea);
        CollisionShape2D shape = new CollisionShape2D();

        shape.Transform = new Godot.Transform2D(0f, new Vector2(-1, 0f));
        CircleShape2D circle = new CircleShape2D();

        circle.Radius = 6;
        shape.Shape   = circle;
        hitArea.AddChild(shape);
        hitArea.Connect("area_entered", this, "_OnHurtAreaEnter");

        // Emitters
        explosionEmitter.Emitting      = false;
        explosionEmitter.Amount        = 300;
        explosionEmitter.Lifetime      = 4;
        explosionEmitter.OneShot       = true;
        explosionEmitter.SpeedScale    = 2;
        explosionEmitter.Explosiveness = 1;
        AddChild(explosionEmitter);

        smokeTrailEmitter.Amount          = 200;
        smokeTrailEmitter.Preprocess      = 0.5f;
        smokeTrailEmitter.ProcessMaterial = smokeTrailMaterial;
        AddChild(smokeTrailEmitter);

        fireTrailEmitter.Amount          = 200;
        fireTrailEmitter.Preprocess      = 0.5f;
        fireTrailEmitter.SpeedScale      = 1.5f;
        fireTrailEmitter.Explosiveness   = .1f;
        fireTrailEmitter.Randomness      = 1;
        fireTrailEmitter.ProcessMaterial = fireTrailMaterial;
        fireTrailEmitter.Transform       = new Godot.Transform2D(0f, new Vector2(-1, 0f));
        AddChild(fireTrailEmitter);

        // Timers
        explosionCompleteTimer.WaitTime = 1f;
        explosionCompleteTimer.OneShot  = true;
        explosionCompleteTimer.Connect("timeout", this, "queue_free");
        AddChild(explosionCompleteTimer);
        initialBoomVelocityTimer.WaitTime = 0.2f;
        initialBoomVelocityTimer.OneShot  = true;
        initialBoomVelocityTimer.Connect("timeout", this, "_RemoveInitialBoomVelocity");
        AddChild(initialBoomVelocityTimer);

        Scale = new Vector2(1.7f, 1.7f);
    }
Пример #28
0
    public Fireball(Vector2 direction, Vector2 position, int targetLayer) : base(direction, position, targetLayer)
    {
        damage            = 100f;
        knockbackStrength = 50f;
        Acceleration      = 200;
        effectRadius      = 30f;
        LifetimeTotal     = 1f;

        Texture gradient = ResourceLoader.Load("res://assets/gradients/radial.png") as Texture;

        light.Texture = gradient;
        light.Scale   = new Vector2(.1f, .1f);
        light.Color   = new Color(1f, .7f, .7f, .2f);
        AddChild(light);

        VisibilityNotifier2D onScreenNotifier = new VisibilityNotifier2D();

        onScreenNotifier.Connect("screen_exited", this, "queue_free");
        AddChild(onScreenNotifier);

        Position = Position + Direction * 10f;

        // Sprite
        sprite.Texture = spriteImage;
        AddChild(sprite);

        // Collider
        hitArea.CollisionLayer = 0;
        hitArea.SetCollisionMaskBit(0, false);
        hitArea.SetCollisionMaskBit(targetLayer, true);
        AddChild(hitArea);
        CollisionShape2D shape = new CollisionShape2D();

        shape.Transform = new Godot.Transform2D(0f, new Vector2(-1, 0f));
        CircleShape2D circle = new CircleShape2D();

        circle.Radius = 6;
        shape.Shape   = circle;
        hitArea.AddChild(shape);
        hitArea.Connect("area_entered", this, "_OnHurtAreaEnter");

        // Emitters
        explosionEmitter.ProcessMaterial = explosionMaterial;
        explosionEmitter.Emitting        = false;
        explosionEmitter.Amount          = 150;
        explosionEmitter.Lifetime        = 4;
        explosionEmitter.OneShot         = true;
        explosionEmitter.SpeedScale      = 2;
        explosionEmitter.Explosiveness   = 1;
        explosionEmitter.ZIndex          = -100;
        AddChild(explosionEmitter);

        smokeTrailEmitter.Amount          = 200;
        smokeTrailEmitter.Preprocess      = 0.5f;
        smokeTrailEmitter.ProcessMaterial = smokeTrailMaterial;
        AddChild(smokeTrailEmitter);

        fireTrailEmitter.Amount          = 100;
        fireTrailEmitter.Preprocess      = 0.5f;
        fireTrailEmitter.SpeedScale      = 1.5f;
        fireTrailEmitter.Explosiveness   = .1f;
        fireTrailEmitter.Randomness      = 1;
        fireTrailEmitter.ProcessMaterial = fireTrailMaterial;
        fireTrailEmitter.Transform       = new Godot.Transform2D(0f, new Vector2(-1, 0f));
        AddChild(fireTrailEmitter);

        // Timers
        Color   targetColor     = new Color(light.Color.r, light.Color.g, light.Color.b, light.Color.a * 2);
        Color   targetColorNone = new Color(light.Color.r, light.Color.g, light.Color.b, 0);
        Vector2 targetScale     = light.Scale * 3 * Mathf.Clamp((float)new Random().NextDouble(), .5f, 1f);

        onHitTween.InterpolateProperty(light, "color", light.Color, targetColor, .2f, easeType: Tween.EaseType.Out);
        onHitTween.InterpolateProperty(light, "color", targetColor, targetColorNone, .1f, easeType: Tween.EaseType.Out, delay: .2f);
        onHitTween.InterpolateProperty(light, "scale", light.Scale, targetScale, .1f);
        onHitTween.InterpolateProperty(explosionMaterial, "gravity", explosionMaterial.Gravity, default(Vector3), 0.1f, delay: .2f);
        onHitTween.InterpolateCallback(this, 1f, "queue_free");
        AddChild(onHitTween);

        lifetime.Connect("timeout", this, nameof(Explode));
    }
Пример #29
0
        public void SetCollisionRadius(float collisionRadius)
        {
            CircleShape2D collsionShape = (CircleShape2D)_circleCollisionShape.GetShape();

            collsionShape.SetRadius(collisionRadius);
        }