public override EdgeCollision CheckMapEdgeCollision(IMap map) { EdgeCollision edgeCollision = base.CheckMapEdgeCollision(map); //Call base method, which keeps ball in bounds if (edgeCollision == EdgeCollision.Top || edgeCollision == EdgeCollision.Bottom) // Bounce off top or bottom { Direction.y *= -1; //Flip y direction Debug.Log("Ball Edge Collide"); } return(edgeCollision); }
public override EdgeCollision CheckMapEdgeCollision(IMap map) { EdgeCollision edgeCollision = base.CheckMapEdgeCollision(map); //Call base method, which keeps ball in bounds and reverses direction if (edgeCollision == EdgeCollision.Top) { CreateHitmarker(new Vector2(Bounds.center.x, Bounds.max.y)); } else if (edgeCollision == EdgeCollision.Bottom) { CreateHitmarker(new Vector2(Bounds.center.x, Bounds.min.y)); } return(edgeCollision); }
//Every object must stay on screen vertically, so let that be the default implementation public virtual EdgeCollision CheckMapEdgeCollision(IMap map) { EdgeCollision edgeCollision = map.CheckEdgeCollision(this.Bounds); if (edgeCollision == EdgeCollision.Top) { MoveTo(new Vector2(this.Bounds.center.x, map.Bounds.max.y - this.Bounds.extents.y)); } else if (edgeCollision == EdgeCollision.Bottom) { MoveTo(new Vector2(this.Bounds.center.x, map.Bounds.min.y + this.Bounds.extents.y)); } return(edgeCollision); }
// Use this for initialization void Start() { Player = GameObject.Find("Player").GetComponent <Player>(); Edge = GameObject.Find("Player").GetComponent <EdgeCollision>(); if (this.transform.position.x > 0) { xpos = -1 * speed; } else { xpos = speed; } }
// Use this for initialization void Start() { this.transform.position = startPosition; DontDestroyOnLoad(this); Edge = this.GetComponent <EdgeCollision>(); source = GetComponent <AudioSource>(); Skin = GetComponent <SpriteRenderer>(); Highscore = PlayerPrefs.GetInt("Highscore"); Stars = PlayerPrefs.GetInt("Stars"); skinName = PlayerPrefs.GetString("Skin"); tmpSkin = Resources.Load <Sprite>(skinName); if (tmpSkin != null) { Skin.sprite = tmpSkin; } }
public static Boolean GetCollision(SphereCollision collidableA, EdgeCollision collidableB, out Vector3 position, out Vector3 normal, out float scale, out float distance) { // transformation matrix 1 var tm = collidableB.Parent.ScaleMatrix * collidableB.Parent.RotationMatrix; var pos = collidableA.Position; var origin = collidableB.Position + Vector3.Transform(collidableB.Origin, tm); var sv = Vector3.Transform(collidableB.SpanVector, tm); scale = (sv.X * (pos.X - origin.X) + sv.Y * (pos.Y - origin.Y) + sv.Z * (pos.Z - origin.Z)) / (sv.X * sv.X + sv.Y * sv.Y + sv.Z * sv.Z); //Console.WriteLine($"{scale}"); position = origin + scale * sv; normal = pos - position; normal.Normalize(); distance = (pos - position).Length(); return(distance < collidableB.Distance + collidableA.Radius); }
public static Vector3 HandleCollision(SphereCollision collider, EdgeCollision collidable, Vector3 position, Vector3 normal) { return(position + normal * (collidable.Distance + collider.Radius)); }
public static Boolean GetCollision(SphereCollision collidableA, EdgeCollision collidableB, out Vector3 position, out Vector3 normal) { return(GetCollision(collidableA, collidableB, out position, out normal, out var f1, out var f2)); }