예제 #1
0
    GameObject SetUpAutomatedThrowing(Transform stopPos, Vector2 positionThrown)
    {
        GameObject pieceThrown = Instantiate(pieceToThrow, positionThrown, Quaternion.identity);

        foreach (Transform child in pieceThrown.transform)
        {
            child.gameObject.layer = LayerMask.NameToLayer("NoPlayerCollision");
        }
        DetachedPiece detachedPieceComp = pieceThrown.GetComponent <DetachedPiece>();

        detachedPieceComp.IgnoreColl(playerMoveComp.pieceColliders, true);
        detachedPieceComp.RevertCollision();

        // SET UP POSITION TO LERP TO
        Vector3 midPos = new Vector3();

        midPos.x = stopPos.position.x + (positionThrown.x - stopPos.position.x) / 2;
        midPos.y = stopPos.position.y + 3f;

        Vector3[] positions = new Vector3[] { positionThrown, midPos, stopPos.position };

        // Set the detatched pieces stopping point
        detachedPieceComp.SetStoppingDestination(positions);

        //Rigidbody2D pieceRigidBody = pieceThrown.GetComponent<Rigidbody2D>();
        //pieceRigidBody.gravityScale = 0; //temporarily turn off the normal gravity in order to do it manually for the throws


        //set the face of the new loose boi
        LookAtObject looseBoiFace = pieceThrown.GetComponentInChildren <LookAtObject>();

        looseBoiFace.randomizeFace = false;
        LookAtObject newBoiFace = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1).GetComponentInChildren <LookAtObject>();

        looseBoiFace.GetComponent <SpriteRenderer>().sprite = newBoiFace.GetComponent <SpriteRenderer>().sprite;
        if (newBoiFace.alreadyGotSpecialFace)
        {
            looseBoiFace.alreadyGotSpecialFace = true;
        }
        //make them look at the one who dropped them (can change)
        looseBoiFace.autofindLookTarget = false;
        looseBoiFace.targetLook         = transform;

        playerHealthComp.OnThrow(); //ENABLE TO DETATCH PIECES

        return(pieceThrown);
    }
예제 #2
0
    // THIS IS THE OLD PREFAB FIREING FOR THE CAMPFIRE DELETE LATER ------------------------------------------------------------------
    GameObject ShootProjectile(Throw directionalThrow, Transform stopPos, Vector2 positionThrown)
    {
        //if grounded
        //Vector2 positionThrown = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1).transform.position;
        //if (positionThrown.y % 2 == 0)
        //{
        //    positionThrown.y = Mathf.RoundToInt(positionThrown.y) + .5f;
        //}

        GameObject pieceThrown = Instantiate(pieceToThrow, positionThrown, Quaternion.identity);

        foreach (Transform child in pieceThrown.transform)
        {
            child.gameObject.layer = LayerMask.NameToLayer("NoPlayerCollision");
        }
        DetachedPiece detachedPieceComp = pieceThrown.GetComponent <DetachedPiece>();

        detachedPieceComp.IgnoreColl(playerMoveComp.pieceColliders, true);
        detachedPieceComp.RevertCollision();

        // Set the detatched pieces stopping point
        //detachedPieceComp.SetStoppingDestination(stopPos);

        //Get the Vectpr to fire the piece from
        //Transform playerHead = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1);
        //Vector3 fireDirectionVector = (rotationIndicatorIcon.transform.position - playerHead.position).normalized;

        //CalculateThrow(); // Calculate the shot velocity and gravity depending on the incial launch angle


        Rigidbody2D pieceRigidBody = pieceThrown.GetComponent <Rigidbody2D>();

        pieceRigidBody.velocity     = new Vector2(directionalThrow.startingVelocity.x, directionalThrow.startingVelocity.y);
        pieceRigidBody.gravityScale = 0; //temporarily turn off the normal gravity in order to do it manually for the throws
        detachedPieceComp.gravity   = directionalThrow.gravity;
        detachedPieceComp.hasLanded = false;

        playerHealthComp.OnThrow(); //ENABLE TO DETATCH PIECES

        // Play Throw Sound
        fModThrowPieceEvent.start();

        return(pieceThrown);
    }
예제 #3
0
    GameObject ShootProjectile()
    {
        // Generate the object to shot from the player
        //Vector2 positionThrown = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1).transform.position;
        //positionThrown.y = Mathf.RoundToInt(positionThrown.y) + .5f;

        //if grounded
        Vector2 positionThrown = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1).transform.position;

        //positionThrown = Movement.RoundVectorToPoint5s(positionThrown);
        //if (positionThrown.y % 1 == 0)
        //{
        //    positionThrown.y += .5f;
        //    print("on the line");
        //}
        positionThrown.y = Mathf.Round(positionThrown.y + .5f) - .5f;


        GameObject pieceThrown = Instantiate(pieceToThrow, positionThrown, Quaternion.identity);

        //set the face of the new loose boi
        LookAtObject looseBoiFace = pieceThrown.GetComponentInChildren <LookAtObject>();

        looseBoiFace.randomizeFace = false;
        LookAtObject newBoiFace = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1).GetComponentInChildren <LookAtObject>();

        looseBoiFace.GetComponent <SpriteRenderer>().sprite = newBoiFace.GetComponent <SpriteRenderer>().sprite;
        if (newBoiFace.alreadyGotSpecialFace)
        {
            looseBoiFace.alreadyGotSpecialFace = true;
        }
        //make them look at the one who dropped them (can change)
        looseBoiFace.autofindLookTarget = false;
        looseBoiFace.targetLook         = transform;

        DetachedPiece detachedPieceComp = pieceThrown.GetComponent <DetachedPiece>();

        detachedPieceComp.IgnoreColl(playerMoveComp.pieceColliders, true);
        detachedPieceComp.RevertCollision();

        //Get the Vectpr to fire the piece from
        Transform playerHead          = playerHealthComp.playerBlockParent.GetChild((int)playerHealthComp.health - 1);
        Vector3   fireDirectionVector = (rotationIndicatorIcon.transform.position - playerHead.position).normalized;

        CalculateThrow(); // Calculate the shot velocity and gravity depending on the incial launch angle


        Rigidbody2D pieceRigidBody = pieceThrown.GetComponent <Rigidbody2D>();

        pieceRigidBody.velocity     = new Vector2(currentThrow.startingVelocity.x * rotationIndicatorInput.x, currentThrow.startingVelocity.y * Mathf.Sign(rotationIndicatorInput.y));
        pieceRigidBody.gravityScale = 0; //temporarily turn off the normal gravity in order to do it manually for the throws
        detachedPieceComp.gravity   = currentThrow.gravity;
        detachedPieceComp.hasLanded = false;
        if (currentThrow == throwingProfile.horizontals)
        {
            detachedPieceComp.SetTimeFromSpeedAndDistance(currentThrow.xDistance);
        }
        playerHealthComp.OnThrow(); //ENABLE TO DETATCH PIECES

        // Play Throw Sound
        fModThrowPieceEvent.start();
        //throwScreamEvent.start();
        return(pieceThrown);
    }