Пример #1
0
    // Use this for initialization
    void Start()
    {
        cameraOne  = GameObject.Find("FinishCamera").GetComponent <Camera>();
        kartOne    = GameObject.Find("KartFirst").GetComponentInChildren <Renderer>();
        kartTwo    = GameObject.Find("KartSecond").GetComponentInChildren <Renderer>();
        kartThree  = GameObject.Find("KartThird").GetComponentInChildren <Renderer>();
        kartFour   = GameObject.Find("KartFourth").GetComponentInChildren <Renderer>();
        podFirst   = GameObject.Find("PodiumFirst").GetComponent <Image>();
        podSecond  = GameObject.Find("PodiumSecond").GetComponent <Image>();
        podThird   = GameObject.Find("PodiumThird").GetComponent <Image>();
        podFourth  = GameObject.Find("PodiumFourth").GetComponent <Image>();
        psActor    = GetComponent <PlayerSelectActor>();
        RaceUI     = GameObject.FindGameObjectWithTag("RaceUI");
        menuButton = GameObject.Find("MenuButton").GetComponent <Image>();
        menuText   = GameObject.Find("MenuText").GetComponent <Image>();

        menuButton.enabled = false;
        menuText.enabled   = false;
        podFirst.enabled   = false;
        podSecond.enabled  = false;
        podThird.enabled   = false;
        podFourth.enabled  = false;
        lapManager         = GetComponent <LapsManager>();

        kart_go  = GameObject.Find("Camera1");
        kart_go2 = GameObject.Find("Camera2");
        kart_go3 = GameObject.Find("Camera3");
        kart_go4 = GameObject.Find("Camera4");
    }
    // initialize.
    void Awake()
    {
        //Create manager if one doesn't exist.
        if (manager != null && manager != this)
        {
            Destroy(this.gameObject);
            return;
        }
        else
        {
            //Create new gamepad manager instance
            manager = this;
            DontDestroyOnLoad(this.gameObject);

            audioActor             = GetComponent <Audio>();
            itemManager            = GetComponent <ItemManager>();
            lpManager              = GetComponent <LapsManager>();
            posManager             = GetComponent <PositionManager>();
            newPlacementController = GetComponent <NewPlacementController>();
            psActor  = GetComponent <PlayerSelectActor>();
            winActor = GetComponent <WinActor>();

            //Lock gamepadcount based on range
            GamePadCount = Mathf.Clamp(GamePadCount, 1, 4);

            gamepads = new List <xbox_gamepad>();

            //Create gamepads based on gamepad count.
            for (int i = 0; i < GamePadCount; ++i)
            {
                gamepads.Add(new xbox_gamepad(i + 1));
            }
        }
    }
    // Use this for initialization
    void Start()
    {
        //Create copies of the default values to be able to reset them.
        forwardAccelerationCopy  = forwardAcceleration;
        backwardAccelerationCopy = reverseAcceleration;
        maxVelocityCopy          = maxVelocity;
        turnStrengthCopy         = turnStrength;

        lapManager = GameObject.Find("Manager").GetComponent <LapsManager>();



        checkPointPosition = GameObject.Find("RespawnPoint");

        //Gets karts rigid body and sets the centre of mass.
        kartBody = GetComponent <Rigidbody>();
        kartBody.centerOfMass = Vector3.down;



        //   SetUpCamera();
    }
Пример #4
0
    // Update is called once per frame
    void Update()
    {
        Debug.Log(kart.physicsBody.velocity.sqrMagnitude);
        Debug.Log("Kart " + playerNumber + ": " + checkPointCounter);


        if ((kart.IsGrounded) && ((gamepad.GetTriggerDown_R() || gamepad.GetTriggerDown_L())))
        {
            smoke1.Play();
            smoke2.Play();
        }
        else if (!gamepad.GetTriggerDown_R() || !gamepad.GetTriggerDown_L())
        {
            smoke1.Stop();
            smoke2.Stop();
        }

        if (!gamepad.GetTriggerDown_L() && !gamepad.GetTriggerDown_R())
        {
            if (!idleEngine.isPlaying)
            {
                idleEngine.Play();
            }
        }
        if (gamepad.GetTriggerDown_L() || gamepad.GetTriggerDown_R())
        {
            //     if(!engineAccelerate.isPlaying)
            //     {
            //       engineAccelerate.Play();
            //   }
        }

        if (kart.physicsBody.velocity.sqrMagnitude > 800)
        {
            if (idleEngine.isPlaying)
            {
                idleEngine.Stop();
            }

            if (!topEngineSpeed.isPlaying)
            {
                topEngineSpeed.Play();
            }
        }
        Debug.Log(kart.physicsBody.velocity.sqrMagnitude);



        if (gamepad.GetButtonDown("Y"))
        {
            lapNumber++;
        }

        if (lapManager == null)
        {
            lapManager = GameObject.Find("Manager").GetComponent <LapsManager>();
        }

        kartBody = kart.physicsBody;
        //If counter = 0 finish line = last checkpoint and first checkpoint = next.
        //if (checkPointCounter == 0)
        //{
        if (lapManager != null)
        {
            if (checkPointCounter == 0)
            {
                if (lapManager.checkPoints != null)
                {
                    nextCheckPoint = lapManager.checkPoints[0];
                }
                if (lapManager.FinishLine != null)
                {
                    lastCheckPoint = lapManager.FinishLine;
                }
            }
        }


        if (raceCountdownTimer < 0)
        {
            if (gamepad.GetButtonDown("Start") && !isPaused && !npcManager.isPaused)
            {
                npcManager.isPaused = true;
                isPaused            = true;
                Time.timeScale      = 0;
            }
            else if (gamepad.GetButtonDown("Start") && isPaused)
            {
                isPaused            = false;
                npcManager.isPaused = false;
                Time.timeScale      = 1;
            }
        }
        if (isPaused)
        {
            coolDown -= Time.unscaledDeltaTime;
            if (buttonIndex == 1)
            {
                if (gamepad.GetStick_L().Y < -deadZone && coolDown < 0)
                {
                    coolDown    = cdCopy;
                    buttonIndex = 2;
                }
                if (gamepad.GetButtonDown("A"))
                {
                    isPaused            = false;
                    npcManager.isPaused = false;
                    Time.timeScale      = 1;
                    npcManager.enabled  = false;
                }
                if (gamepad.GetButtonUp("A"))
                {
                    npcManager.enabled = false;
                }
            }

            if (buttonIndex == 2)
            {
                if (gamepad.GetStick_L().Y > deadZone && coolDown < 0)
                {
                    coolDown    = cdCopy;
                    buttonIndex = 1;
                }
                if (gamepad.GetButtonDown("A"))
                {
                    Time.timeScale = 1;
                    Destroy(GameObject.Find("Manager"));
                    SceneManager.LoadScene(0);
                }
            }
            greyBackDrop.enabled  = true;
            pauseContinue.enabled = true;
            pauseMenu.enabled     = true;
            pauseUI.enabled       = true;
        }
        else if (!isPaused)
        {
            greyBackDrop.enabled  = false;
            pauseContinue.enabled = false;
            pauseMenu.enabled     = false;
            pauseUI.enabled       = false;
        }

        if (buttonIndex == 1)
        {
            pauseContinue.color = Color.yellow;
            pauseMenu.color     = Color.grey;
        }
        if (buttonIndex == 2)
        {
            pauseContinue.color = Color.grey;
            pauseMenu.color     = Color.yellow;
        }

        //if (lapManager.endTime < 0 && lapNumber < 3)
        //{
        //    finalPosition = kartPosition;
        //}
        //If kart hits slick spin kart for set time.

        if (boostPlayer)
        {
            kart.SpeedBoost(boostPower, boostTime, 3.0f, 1.0f);
            if (!gasLeak.isPlaying)
            {
                gasLeak.Play();
            }
            boostPlayer = false;
        }



        if (hitSlick)
        {
            kart.Spin(slickSpinOutTime);
            kart.SpeedPenalty(slickSpeedPenalty, lockSteerTime, 1.0f);
            lockSteer = true;
            hitSlick  = false;
        }
        if (lockSteer)
        {
            lockSteerTime     -= Time.deltaTime;
            kart.maxSteerAngle = 0.0f;
            if (lockSteerTime < 0)
            {
                kart.maxSteerAngle = steerAngleCopy;
                lockSteerTime      = slickSpinOutTime;
                lockSteer          = false;
            }
        }
        raceCountdownTimer -= Time.deltaTime;
        if (raceCountdownTimer > 0)
        {
            kartBody.constraints = RigidbodyConstraints.FreezeAll;
        }
        else
        {
            kartBody.constraints = RigidbodyConstraints.None;
        }
        //If the player is disabled.
        if (playerDisabled)
        {
            Vector3 tempVector;
            deathParticles.Play();
            tempVector = deathParticles.transform.position;
            //Freeze rigidbody, disable mesh, reset velocity, move kart slightly back and up.
            if (!explosion.isPlaying)
            {
                explosion.Play();
            }

            disabledTimer       += Time.deltaTime;
            kartBody.velocity    = new Vector3();
            kartMat.material     = transparent;
            kartBody.constraints = RigidbodyConstraints.FreezeAll;
            mesh.SetActive(false);

            if (setOnce)
            {
                this.gameObject.transform.position = gameObject.transform.position + (transform.forward * 12);
                gameObject.transform.position      = gameObject.transform.position + (transform.up * 2);
                setOnce = false;
            }

            deathParticles.transform.position = tempVector;

            //If disable timer is greater than 0 take constraints off car
            //turn mesh on and turn off/on relevant bools.
            if (disabledTimer > 2.0f)
            {
                immuneToDamage = true;
                deathParticles.transform.position = kart.transform.position;
                deathParticles.Stop();
                respawnParticles.Play();
                kartBody.constraints = RigidbodyConstraints.None;
                disabledTimer        = 0.0f;
                playerDisabled       = false;

                mesh.SetActive(true);
                setOnce = true;
            }
        }

        if (immuneToDamage)
        {
            immuneTimer   -= Time.deltaTime;
            flashingTimer -= Time.deltaTime;


            if (flashingTimer < 0)
            {
                flashingTimer = ftCopy;

                if (flashFull)
                {
                    kartMat.material = matCopy;
                    wheel1.material  = wheelCopy;
                    wheel2.material  = wheelCopy;
                    wheel3.material  = wheelCopy;
                    wheel4.material  = wheelCopy;
                    flashClear       = true;
                    flashFull        = false;
                }
                else if (flashClear)
                {
                    kartMat.material       = transparent;
                    kartMat.material.color = Color.cyan;
                    wheel1.material        = transparent;
                    wheel1.material.color  = Color.cyan;
                    wheel2.material        = transparent;
                    wheel2.material.color  = Color.cyan;
                    wheel3.material        = transparent;
                    wheel3.material.color  = Color.cyan;
                    wheel4.material        = transparent;
                    wheel4.material.color  = Color.cyan;
                    flashClear             = false;
                    flashFull = true;
                }
            }


            if (immuneTimer < 0)
            {
                respawnParticles.Stop();
                immuneToDamage   = false;
                immuneTimer      = 5.0f;
                kartMat.material = matCopy;
                wheel1.material  = wheelCopy;
                wheel2.material  = wheelCopy;
                wheel3.material  = wheelCopy;
                wheel4.material  = wheelCopy;
            }
        }



        //If trigger down go forward else if left trigger is down
        //bring thrust back to 0.
        if (gamepad.GetTriggerDown_R() && !lockSteer)
        {
            kart.Thrust = gamepad.GetTrigger_R();
        }
        else if (!gamepad.GetTriggerDown_L())
        {
            kart.Thrust = 0;
        }

        //If trigger down go backward else if right trigger isnt down
        //bring thrust back to 0.
        if (gamepad.GetTriggerDown_L() && !lockSteer)
        {
            kart.Thrust = -gamepad.GetTrigger_L();
        }
        else if (!gamepad.GetTriggerDown_R())
        {
            kart.Thrust = 0.0f;
        }

        //Steering left stick X axis input.
        kart.Steering = gamepad.GetStick_L().X;


        if (kart.IsOverturned)
        {
            overTurnCounter -= Time.deltaTime;

            if (overTurnCounter < 0)
            {
                this.transform.forward  = lastCheckPoint.transform.forward;
                this.transform.position = lastCheckPoint.transform.position;
                playerDisabled          = true;
                overTurnCounter         = 3;
            }
        }

        //If b button traction, deceleration and breakpower
        // = set values else reset to defaults.
        if (gamepad.GetButton("B"))
        {
            if (kart.physicsBody.velocity.sqrMagnitude > 50.0f && kart.IsGrounded)
            {
                kart.steerSpeed = 0.4f;

                kart.decelerationSpeed = driftDeceleration;
                kart.breakPower        = breakPower;
                if (kart.physicsBody.velocity.sqrMagnitude < 200)
                {
                    kart.traction = 0.4f;
                }
                else if (kart.physicsBody.velocity.sqrMagnitude > 200)
                {
                    kart.traction = driftTraction;
                }
            }
        }
        else
        {
            kart.decelerationSpeed = kart.decelerationSpeedCopy;
            kart.breakPower        = 0.0f;
            kart.traction          = 0.4f;
            kart.steerSpeed        = steerSpeedCopy;
        }

        if (gamepad.GetButton("Back"))
        {
            this.transform.forward  = lastCheckPoint.transform.forward;
            this.transform.position = lastCheckPoint.transform.position; this.transform.forward = lastCheckPoint.transform.forward;
            this.transform.position = lastCheckPoint.transform.position;
        }

        Debug.Log(checkPointCounter);
    }
Пример #5
0
    // Use this for initialization
    void Start()
    {
        kart           = GetComponent <KartController>();
        steerSpeedCopy = kart.steerSpeed;
        ftCopy         = flashingTimer;
        lapManager     = GameObject.Find("Manager").GetComponent <LapsManager>();
        npcManager     = GameObject.Find("Manager").GetComponent <NewPlacementController>();
        //    checkPointPosition = GameObject.Find("RespawnPoint");
        lapNumber      = 1;
        steerAngleCopy = kart.maxSteerAngle;
        //  lockSteerTime = slickSpinOutTime;
        //Layer mask to ignore the kart.
        layerMask = 1 << LayerMask.NameToLayer("Vehicle");
        layerMask = ~layerMask;
        matCopy   = kartMat.material;
        wheelCopy = wheel1.material;
        //Acquire gamepad based on player number
        flashFull = true;

        greyBackDrop  = GameObject.Find("GreyBackDrop").GetComponent <Image>();
        pauseUI       = GameObject.Find("PauseUIPaused").GetComponent <Image>();
        pauseContinue = GameObject.Find("PauseUIContinue").GetComponent <Image>();
        pauseMenu     = GameObject.Find("PauseUIMainMenu").GetComponent <Image>();

        idleEngine     = GameObject.Find("EngineIdleSound").GetComponent <AudioSource>();
        kartCrash      = GameObject.Find("CrashSound").GetComponent <AudioSource>();
        gasLeak        = GameObject.Find("GasSound").GetComponent <AudioSource>();
        topEngineSpeed = GameObject.Find("TopSpeedSound").GetComponent <AudioSource>();
        explosion      = GameObject.Find("ExplosionSound").GetComponent <AudioSource>();

        for (int i = 1; i <= GamePadManager.Instance.ConnectedTotal(); ++i)
        {
            xbox_gamepad temppad = GamePadManager.Instance.GetGamePad(i);
            switch (playerNumber)
            {
            case 1:
                if (temppad.newControllerIndex == 1)
                {
                    gamepad = temppad;
                }

                break;

            case 2:
                if (temppad.newControllerIndex == 2)
                {
                    gamepad = temppad;
                }

                break;

            case 3:
                if (temppad.newControllerIndex == 3)
                {
                    gamepad = temppad;
                }

                break;

            case 4:
                if (temppad.newControllerIndex == 4)
                {
                    gamepad = temppad;
                }
                break;

            default:
                break;
            }
        }
    }