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; }
private AbstractCollider GetMask() { AbstractCollider mask; if (this.mask != null) { mask = this.mask; } else { mask = GetComponent<AbstractCollider>(); } return mask; }
// 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)); }
public float2 Depenetrate(AbstractCollider colliderA, AbstractCollider colliderB) => collisionSystem.Depenetrate(colliderA, colliderB);
public bool ContainedBy(AbstractCollider colliderA, AbstractCollider colliderB) => collisionSystem.ContainedBy(colliderA, colliderB);
public bool Intersects(AbstractCollider colliderA, AbstractCollider colliderB) => collisionSystem.Intersects(colliderA, colliderB);
public void RemoveCollider <T>(AbstractCollider collider) => collisionSystem.RemoveCollider <T>(collider);
public void AddCollider <T>(AbstractCollider collider) => collisionSystem.AddCollider <T>(collider);
void SetMask(AbstractCollider mask) { this.mask = mask; }
public ColliderPair(AbstractCollider a, AbstractCollider b) { this.a = a; this.b = b; }