Exemple #1
0
        public bool OnGround(float offsetX = 0, float offsetY = 0)
        {
            mask = GetMask();
            var collision = Collide.WithAtPos (collideTypes, mask, 0 + offsetX, -0.5f + offsetY);

            return collision.Intersect;
        }
Exemple #2
0
        private AbstractCollider GetMask()
        {
            AbstractCollider mask;

            if (this.mask != null) {
                mask = this.mask;
            } else {
                mask = GetComponent<AbstractCollider>();
            }

            return mask;
        }
Exemple #3
0
        // Update is called once per frame
        void Update()
        {
            var entity = GetComponent<EntityAccess>().entity;
            mask = GetMask();

            CollisionResult col;

            if (!( col = Collide.WithAtPos(collideTypes, mask, velocity.x, 0) ).Intersect) {
                entity.x += velocity.x;
            } else {
                if (col.Collider is Hitbox) {
                    entity.x += col.MinimumTranslation.x;
                } else {
                    entity.y += col.MinimumTranslation.y;
                    entity.x += col.MinimumTranslation.x + velocity.x;
                }

                velocity.x = 0;

                HitWall(this, true, false);

            }

            if (!( col = Collide.WithAtPos(collideTypes, mask, 0, velocity.y) ).Intersect) {
                entity.y += velocity.y;
            } else {

                if (col.Collider is Hitbox) {
                    entity.y += col.MinimumTranslation.y;
                } else {
                    entity.x += col.MinimumTranslation.x;
                    entity.y += col.MinimumTranslation.y + velocity.y;
                }

                velocity.y = 0;

                HitWall(this, false, true);

            }

            // Stops sliding down slopes
            if (!OnGround()) {
                velocity.y -= gravity;
            }

            velocity.x = ClampUtil.Clamp (velocity.x, -1 * maxSpeed.x, maxSpeed.x);
            velocity.y = ClampUtil.Clamp (velocity.y, -1 * maxSpeed.y, maxSpeed.y);
        }
 public virtual bool CheckCollision(AbstractCollider other_collider)
 {
     return(Outline.AABB(other_collider.Outline));
 }
Exemple #5
0
 public float2 Depenetrate(AbstractCollider colliderA, AbstractCollider colliderB) => collisionSystem.Depenetrate(colliderA, colliderB);
Exemple #6
0
 public bool ContainedBy(AbstractCollider colliderA, AbstractCollider colliderB) => collisionSystem.ContainedBy(colliderA, colliderB);
Exemple #7
0
 public bool Intersects(AbstractCollider colliderA, AbstractCollider colliderB) => collisionSystem.Intersects(colliderA, colliderB);
Exemple #8
0
 public void RemoveCollider <T>(AbstractCollider collider) => collisionSystem.RemoveCollider <T>(collider);
Exemple #9
0
 public void AddCollider <T>(AbstractCollider collider) => collisionSystem.AddCollider <T>(collider);
Exemple #10
0
 void SetMask(AbstractCollider mask)
 {
     this.mask = mask;
 }
Exemple #11
0
 public ColliderPair(AbstractCollider a, AbstractCollider b)
 {
     this.a = a;
     this.b = b;
 }