public override bool TestCollsionVsCircle(CirlceCollisionHull2D other /*,ref Collision c*/) { // pass if distance between centers is <= sum of radii // optimized collision passes if (distance between centers) squared <= (sum of radii) sq // 1. get the two centers // 2. difference between centers // 3. distance squared = vector dot(diff,diff) // 4. sum of radii // 5. square sum // 6. DO THE TEST; distSq <= sumSq Vector2 diff = this.position - other.position; // get distance float distanceSqr = Vector2.Dot(diff, diff); float radii = radius + other.radius; if ((distanceSqr <= radii * radii)) { return(true); } else { return(false); } }
// Start is called before the first frame update void Start() { otherCircle = colliderTarget.GetComponent <CirlceCollisionHull2D>(); otherRect = colliderTarget.GetComponent <AABBCollisionHull2D>(); otherOBB = colliderTarget.GetComponent <OBBCollisionHull2D>(); }
// Update is called once per frame public override bool TestCollsionVsCircle(CirlceCollisionHull2D other) { // see circle return(other.TestCollsionVsAABB(this.GetComponent <AABBCollisionHull2D>())); }
public abstract bool TestCollsionVsCircle(CirlceCollisionHull2D other);
public override bool TestCollsionVsCircle(CirlceCollisionHull2D other, ref Collision c) { // see circle return(other.TestCollsionVsCircle(this.GetComponent <CirlceCollisionHull2D>(), ref c)); }
public abstract bool TestCollsionVsCircle(CirlceCollisionHull2D other /*,ref Collision c*/);