Interwebsurfer / Frogger2

Frogger but its 2
0 stars 0 forks source link

Mechanics #2

Open Interwebsurfer opened 5 years ago

Interwebsurfer commented 5 years ago

We will need a dodge roll, movement, and everything else

Interwebsurfer commented 5 years ago

What we need: Character movement (i have some code for this already) Life System(I already have this but it looks gay) scene management(switching between start screen actual game and death screen) importing assets/sprites

KadenFoley commented 5 years ago

Jaydon can I see your movement code

I'm only experienced in 3D unity coding, not 2D so it might take some time to get to speed

italyguy60 commented 5 years ago

pragma strict

private var speed = 2.0; private var pos : Vector3; private var tr : Transform;

function Start() { pos = transform.position; tr = transform; }

function Update() {

 if (Input.GetKeyDown(KeyCode.D) && tr.position == pos) {
     pos += Vector3.right;
 }
 else if (Input.GetKeyDown(KeyCode.A) && tr.position == pos) {
     pos += Vector3.left;
 }
 else if (Input.GetKeyDown(KeyCode.W) && tr.position == pos) {
     pos += Vector3.up;
 }
 else if (Input.GetKeyDown(KeyCode.S) && tr.position == pos) {
     pos += Vector3.down;
 }

 transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);

}

Make sure to place this code somewhere between the "void start" and "void update" statements

italyguy60 commented 5 years ago

Different version as of 6:26 pm

Vector3 pos; // For movement float speed = 2.0f; // Speed of movement

 void Start () {
     pos = transform.position;          // Take the initial position
 }

 void FixedUpdate () {
     if(Input.GetKey(KeyCode.A) && transform.position == pos) {        // Left
         pos += Vector3.left;
     }
     if(Input.GetKey(KeyCode.D) && transform.position == pos) {        // Right
         pos += Vector3.right;
     }
     if(Input.GetKey(KeyCode.W) && transform.position == pos) {        // Up
         pos += Vector3.up;
     }
     if(Input.GetKey(KeyCode.S) && transform.position == pos) {        // Down
         pos += Vector3.down;
     }
     transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);    // Move there
 }
italyguy60 commented 5 years ago

hmm how about this?

using System.Collections; using System.Collections.Generic; using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

public float moveSpeed;

// Use this for initialization
void Start () {

    moveSpeed - 5f;

}

// Update is called once per frame
void Update () {

    transform.Translate(moveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime, 0f, moveSpeed * Input.GetAxis("Vertical") * Time.deltaTime);

}

}

DONT FORGET TO ASSIGN THIS CODE TO A SPRITE FIRST. It wont work otherwise. It's supposed to hook up automatically to make the sprite move along the x and y-axis's with WASD. Let me know if there needs to be changes

Interwebsurfer commented 5 years ago

using UnityEngine; using System.Collections; using UnityEngine.UI; //Allows us to use UI. using UnityEngine.SceneManagement;

namespace Completed { //Player inherits from MovingObject, our base class for objects that can move, Enemy also inherits from this. public class Player : MovingObject { public float restartLevelDelay = 1f; //Delay time in seconds to restart level. public int pointsPerFood = 10; //Number of points to add to player food points when picking up a food object. public int pointsPerSoda = 20; //Number of points to add to player food points when picking up a soda object. public int wallDamage = 1; //How much damage a player does to a wall when chopping it. public Text foodText; //UI Text to display current player food total. public AudioClip moveSound1; //1 of 2 Audio clips to play when player moves. public AudioClip moveSound2; //2 of 2 Audio clips to play when player moves. public AudioClip eatSound1; //1 of 2 Audio clips to play when player collects a food object. public AudioClip eatSound2; //2 of 2 Audio clips to play when player collects a food object. public AudioClip drinkSound1; //1 of 2 Audio clips to play when player collects a soda object. public AudioClip drinkSound2; //2 of 2 Audio clips to play when player collects a soda object. public AudioClip gameOverSound; //Audio clip to play when player dies.

    private Animator animator;                  //Used to store a reference to the Player's animator component.
    private int food;                           //Used to store player food points total during level.

if UNITY_IOS || UNITY_ANDROID || UNITY_WP8 || UNITY_IPHONE

    private Vector2 touchOrigin = -Vector2.one; //Used to store location of screen touch origin for mobile controls.

endif

    //Start overrides the Start function of MovingObject
    protected override void Start ()
    {
        //Get a component reference to the Player's animator component
        animator = GetComponent<Animator>();

        //Get the current food point total stored in GameManager.instance between levels.
        food = GameManager.instance.playerFoodPoints;

        //Set the foodText to reflect the current player food total.
        foodText.text = "Food: " + food;

        //Call the Start function of the MovingObject base class.
        base.Start ();
    }

    //This function is called when the behaviour becomes disabled or inactive.
    private void OnDisable ()
    {
        //When Player object is disabled, store the current local food total in the GameManager so it can be re-loaded in next level.
        GameManager.instance.playerFoodPoints = food;
    }

    private void Update ()
    {
        //If it's not the player's turn, exit the function.
        if(!GameManager.instance.playersTurn) return;

        int horizontal = 0;     //Used to store the horizontal move direction.
        int vertical = 0;       //Used to store the vertical move direction.

        //Check if we are running either in the Unity editor or in a standalone build.

if UNITY_STANDALONE || UNITY_WEBPLAYER

        //Get input from the input manager, round it to an integer and store in horizontal to set x axis move direction
        horizontal = (int) (Input.GetAxisRaw ("Horizontal"));

        //Get input from the input manager, round it to an integer and store in vertical to set y axis move direction
        vertical = (int) (Input.GetAxisRaw ("Vertical"));

        //Check if moving horizontally, if so set vertical to zero.
        if(horizontal != 0)
        {
            vertical = 0;
        }
        //Check if we are running on iOS, Android, Windows Phone 8 or Unity iPhone

elif UNITY_IOS || UNITY_ANDROID || UNITY_WP8 || UNITY_IPHONE

        //Check if Input has registered more than zero touches
        if (Input.touchCount > 0)
        {
            //Store the first touch detected.
            Touch myTouch = Input.touches[0];

            //Check if the phase of that touch equals Began
            if (myTouch.phase == TouchPhase.Began)
            {
                //If so, set touchOrigin to the position of that touch
                touchOrigin = myTouch.position;
            }

            //If the touch phase is not Began, and instead is equal to Ended and the x of touchOrigin is greater or equal to zero:
            else if (myTouch.phase == TouchPhase.Ended && touchOrigin.x >= 0)
            {
                //Set touchEnd to equal the position of this touch
                Vector2 touchEnd = myTouch.position;

                //Calculate the difference between the beginning and end of the touch on the x axis.
                float x = touchEnd.x - touchOrigin.x;

                //Calculate the difference between the beginning and end of the touch on the y axis.
                float y = touchEnd.y - touchOrigin.y;

                //Set touchOrigin.x to -1 so that our else if statement will evaluate false and not repeat immediately.
                touchOrigin.x = -1;

                //Check if the difference along the x axis is greater than the difference along the y axis.
                if (Mathf.Abs(x) > Mathf.Abs(y))
                    //If x is greater than zero, set horizontal to 1, otherwise set it to -1
                    horizontal = x > 0 ? 1 : -1;
                else
                    //If y is greater than zero, set horizontal to 1, otherwise set it to -1
                    vertical = y > 0 ? 1 : -1;
            }
        }

endif //End of mobile platform dependendent compilation section started above with #elif

        //Check if we have a non-zero value for horizontal or vertical
        if(horizontal != 0 || vertical != 0)
        {
            //Call AttemptMove passing in the generic parameter Wall, since that is what Player may interact with if they encounter one (by attacking it)
            //Pass in horizontal and vertical as parameters to specify the direction to move Player in.
            AttemptMove<Wall> (horizontal, vertical);
        }
    }

    //AttemptMove overrides the AttemptMove function in the base class MovingObject
    //AttemptMove takes a generic parameter T which for Player will be of the type Wall, it also takes integers for x and y direction to move in.
    protected override void AttemptMove <T> (int xDir, int yDir)
    {
        //Every time player moves, subtract from food points total.
        food--;

        //Update food text display to reflect current score.
        foodText.text = "Food: " + food;

        //Call the AttemptMove method of the base class, passing in the component T (in this case Wall) and x and y direction to move.
        base.AttemptMove <T> (xDir, yDir);

        //Hit allows us to reference the result of the Linecast done in Move.
        RaycastHit2D hit;

        //If Move returns true, meaning Player was able to move into an empty space.
        if (Move (xDir, yDir, out hit)) 
        {
            //Call RandomizeSfx of SoundManager to play the move sound, passing in two audio clips to choose from.
            SoundManager.instance.RandomizeSfx (moveSound1, moveSound2);
        }

        //Since the player has moved and lost food points, check if the game has ended.
        CheckIfGameOver ();

        //Set the playersTurn boolean of GameManager to false now that players turn is over.
        GameManager.instance.playersTurn = false;
    }

    //OnCantMove overrides the abstract function OnCantMove in MovingObject.
    //It takes a generic parameter T which in the case of Player is a Wall which the player can attack and destroy.
    protected override void OnCantMove <T> (T component)
    {
        //Set hitWall to equal the component passed in as a parameter.
        Wall hitWall = component as Wall;

        //Call the DamageWall function of the Wall we are hitting.
        hitWall.DamageWall (wallDamage);

        //Set the attack trigger of the player's animation controller in order to play the player's attack animation.
        animator.SetTrigger ("playerChop");
    }

    //OnTriggerEnter2D is sent when another object enters a trigger collider attached to this object (2D physics only).
    private void OnTriggerEnter2D (Collider2D other)
    {
        //Check if the tag of the trigger collided with is Exit.
        if(other.tag == "Exit")
        {
            //Invoke the Restart function to start the next level with a delay of restartLevelDelay (default 1 second).
            Invoke ("Restart", restartLevelDelay);

            //Disable the player object since level is over.
            enabled = false;
        }

        //Check if the tag of the trigger collided with is Food.
        else if(other.tag == "Food")
        {
            //Add pointsPerFood to the players current food total.
            food += pointsPerFood;

            //Update foodText to represent current total and notify player that they gained points
            foodText.text = "+" + pointsPerFood + " Food: " + food;

            //Call the RandomizeSfx function of SoundManager and pass in two eating sounds to choose between to play the eating sound effect.
            SoundManager.instance.RandomizeSfx (eatSound1, eatSound2);

            //Disable the food object the player collided with.
            other.gameObject.SetActive (false);
        }

        //Check if the tag of the trigger collided with is Soda.
        else if(other.tag == "Soda")
        {
            //Add pointsPerSoda to players food points total
            food += pointsPerSoda;

            //Update foodText to represent current total and notify player that they gained points
            foodText.text = "+" + pointsPerSoda + " Food: " + food;

            //Call the RandomizeSfx function of SoundManager and pass in two drinking sounds to choose between to play the drinking sound effect.
            SoundManager.instance.RandomizeSfx (drinkSound1, drinkSound2);

            //Disable the soda object the player collided with.
            other.gameObject.SetActive (false);
        }
    }

    //Restart reloads the scene when called.
    private void Restart ()
    {
        //Load the last scene loaded, in this case Main, the only scene in the game. And we load it in "Single" mode so it replace the existing one
        //and not load all the scene object in the current scene.
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex, LoadSceneMode.Single);
    }

    //LoseFood is called when an enemy attacks the player.
    //It takes a parameter loss which specifies how many points to lose.
    public void LoseFood (int loss)
    {
        //Set the trigger for the player animator to transition to the playerHit animation.
        animator.SetTrigger ("playerHit");

        //Subtract lost food points from the players total.
        food -= loss;

        //Update the food display with the new total.
        foodText.text = "-"+ loss + " Food: " + food;

        //Check to see if game has ended.
        CheckIfGameOver ();
    }

    //CheckIfGameOver checks if the player is out of food points and if so, ends the game.
    private void CheckIfGameOver ()
    {
        //Check if food point total is less than or equal to zero.
        if (food <= 0) 
        {
            //Call the PlaySingle function of SoundManager and pass it the gameOverSound as the audio clip to play.
            SoundManager.instance.PlaySingle (gameOverSound);

            //Stop the background music.
            SoundManager.instance.musicSource.Stop();

            //Call the GameOver function of GameManager.
            GameManager.instance.GameOver ();
        }
    }
}

}

Interwebsurfer commented 5 years ago

^^^This is for the player (works but a lot of it is unnecessary so you guys cut that out)

italyguy60 commented 5 years ago

using UnityEngine; using System.Collections; using UnityEngine.UI; //Allows us to use UI. using UnityEngine.SceneManagement;

namespace Completed { //Player inherits from MovingObject, our base class for objects that can move, Enemy also inherits from this. public class Player : MovingObject { public float restartLevelDelay = 1f; //Delay time in seconds to restart level.

    //public AudioClip gameOverSound; //Audio clip to play when player dies.

    private Animator animator;  //Used to store a reference to the Player's animator component.

if UNITY_IOS || UNITY_ANDROID || UNITY_WP8 || UNITY_IPHONE

private Vector2 touchOrigin = -Vector2.one; //Used to store location of screen touch origin for mobile controls.

endif

    //Start overrides the Start function of MovingObject
    protected override void Start()
    {
        //Get a component reference to the Player's animator component
        //animator = GetComponent<Animator>();

        //Call the Start function of the MovingObject base class.
        base.Start();
    }

    //This function is called when the behaviour becomes disabled or inactive.
    //private void OnDisable()

    //When Player object is disabled, store the current local food total in the GameManager so it can be re-loaded in next level.
    //GameManager.instance.playerHealthPoints = health;
}

private void Update()
{
    //If it's not the player's turn, exit the function.
    if (!GameManager.instance.playersTurn) return;

    int horizontal = 0;     //Used to store the horizontal move direction.
    int vertical = 0;       //Used to store the vertical move direction.
}

}

italyguy60 commented 5 years ago

this is it chief