Beispiel #1
0
 public void Start()
 {
     if (instance == null)
     {
         instance = this;
     }
     BackGroundSound();
 }
 //Run when object is created
 void Start()
 {
     //Precompute accuracy information based on input variables
     accuracyFactor = 360*(1-accuracy);
     accuracyOffset = 0f;
     //Get animator for animation state monitoring
     anim = gameObject.GetComponent <Animator>();
     cameraScript = dependentCamera.GetComponent<FollowPlayerScript> ();
 }
    void createPlayers()
    {
        int numPlayers       = nvs.players.Count;
        ControllerSupport cs = currentView.GetComponent <ControllerSupport>() as ControllerSupport;

        cs.playerObjectList        = new GameObject[numPlayers];
        cs.playerBodyList          = new Renderer[numPlayers];
        cs.playerToControllerIndex = new int[numPlayers];

        GameObject[] playerCams = CameraManager.createSplitScreenCameras(numPlayers);
        GameObject[] ballCams   = CameraManager.createSplitScreenCameras(numPlayers);

        for (int i = 0; i < numPlayers; ++i)
        {
            PlayerInfo player = nvs.players[i] as PlayerInfo;

            GameObject playerContainer = new GameObject(player.name);
            playerContainer.transform.parent = currentView.transform;
            playerContainer.AddComponent <LocalBallMarker> ();
            GameObject playerCamera = playerCams[i];
            playerCamera.transform.parent = playerContainer.transform;
            player.cameraObject           = playerCamera;

            //Create cart for player
            GameObject cartObject = Instantiate(Resources.Load(player.cartModel), new Vector3(0, -100, 0), Quaternion.identity) as GameObject;
            cartObject.name             = "buggy";
            cartObject.transform.parent = playerContainer.transform;
            player.cartGameObject       = cartObject;
            //Create ball for player
            GameObject ballObject = Instantiate(Resources.Load(player.ballModel), new Vector3(0, -100, 0), Quaternion.identity) as GameObject;
            ballObject.name             = "hit_mode_ball";
            ballObject.transform.parent = playerContainer.transform;
            player.ballGameObject       = ballObject;
            //Create character for player
            GameObject characterObject = Instantiate(Resources.Load(player.characterModel)) as GameObject;
            characterObject.name                    = "player_character";
            characterObject.transform.parent        = cartObject.transform;
            characterObject.transform.localPosition = Vector3.zero + new Vector3(0, 0.3f, 0);
            characterObject.transform.localRotation = Quaternion.identity;
            player.characterGameObject              = characterObject;
            //Apply color
            RecolorPlayer.recolorPlayerBody(characterObject.transform.FindChild("body").GetComponent <Renderer>() as Renderer, player.color);
            if (i < 1)          //Only one audiolistener can exist
            {
                characterObject.AddComponent <AudioListener> ();
            }
            //Create camera for hit_ball; remove later
            GameObject hitBallCam = ballCams[i];
            hitBallCam.name = "hit_ball_camera";
            hitBallCam.SetActive(false);
            hitBallCam.transform.parent = ballObject.transform;

            //Add scripts to cart
            (cartObject.transform.GetComponent <CarUserControl>() as CarUserControl).enabled = true;
            Destroy(cartObject.transform.GetComponent <NetworkView>());

            TransferToSwing ts = cartObject.AddComponent <TransferToSwing>() as TransferToSwing;
            ts.ball = ballObject;

            ScriptToggler st = cartObject.AddComponent <ScriptToggler>() as ScriptToggler;
            st.scripts = new List <MonoBehaviour>();
            st.scripts.Add(cartObject.GetComponent <CarController>());
            st.scripts.Add(cartObject.GetComponent <CarUserControl>());
            st.scripts.Add(cartObject.GetComponent <TransferToSwing>());
            st.cameraObject = playerCamera;

            //Add scripts to ball
            InControlSwingMode ics = ballObject.AddComponent <InControlSwingMode>() as InControlSwingMode;
            ics.cameraObject = hitBallCam;
            ics.cart         = cartObject;
            ics.enabled      = false;

            PowerMeter pm = ballObject.AddComponent <PowerMeter>() as PowerMeter;
            pm.m_objectToCircle = ballObject;
            pm.m_markerPrefab   = Instantiate(Resources.Load("powerMeterPrefab")) as GameObject;
            pm.m_swingScript    = ics;
            pm.enabled          = false;

            ScriptToggler stb = ballObject.AddComponent <ScriptToggler>() as ScriptToggler;
            stb.scripts = new List <MonoBehaviour>();
            stb.scripts.Add(ics);
            stb.scripts.Add(pm);
            stb.cameraObject = hitBallCam;


            //controller support
            cs.playerObjectList[i]        = cartObject;
            cs.playerBodyList[i]          = characterObject.transform.FindChild("body").GetComponent <SkinnedMeshRenderer>();
            cs.playerToControllerIndex[i] = -1;                 //dummy value

            FollowPlayerScript fps = (playerCamera.AddComponent <FollowPlayerScript> () as FollowPlayerScript);
            fps.target = cartObject.transform;
        }
        (GameObject.Find("winningPole").gameObject.GetComponent <netWinCollider> () as netWinCollider).initialize();
        nvs.myInfo = nvs.players [0] as PlayerInfo;             //just so some of the network scripts work
        nvs.gameObject.AddComponent <netPause> ();
    }