Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    //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);
    }
Exemple #4
0
    // 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;
        }
    }
Exemple #5
0
    // 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));
 }