예제 #1
0
    public SplitScreenSample(Microsoft.Xna.Framework.Game game)
      : base(game)
    {
      SampleFramework.IsMouseVisible = false;

      _graphicsScreen = new SplitScreen(Services);
      _graphicsScreen.DrawReticle = true;
      GraphicsService.Screens.Insert(0, _graphicsScreen);

      Services.Register(typeof(DebugRenderer), null, _graphicsScreen.DebugRenderer);
      Services.Register(typeof(IScene), null, _graphicsScreen.Scene);

      // Add gravity and damping to the physics Simulation.
      Simulation.ForceEffects.Add(new Gravity());
      Simulation.ForceEffects.Add(new Damping());

      // Add a custom game object which controls the camera of player A.
      var cameraGameObject = new CameraObject(Services);
      GameObjectService.Objects.Add(cameraGameObject);
      _graphicsScreen.ActiveCameraNode = cameraGameObject.CameraNode;

      var projection = (PerspectiveProjection)cameraGameObject.CameraNode.Camera.Projection;
      projection.SetFieldOfView(
        projection.FieldOfViewY,
        GraphicsService.GraphicsDevice.Viewport.AspectRatio / 2,
        projection.Near,
        projection.Far);
      cameraGameObject.CameraNode.Camera = new Camera(projection);

      // A second camera for player B.
      _cameraNodeB = new CameraNode(cameraGameObject.CameraNode.Camera);
      _graphicsScreen.ActiveCameraNodeB = _cameraNodeB;

      GameObjectService.Objects.Add(new GrabObject(Services));
      GameObjectService.Objects.Add(new GroundObject(Services));
      GameObjectService.Objects.Add(new DudeObject(Services));
      GameObjectService.Objects.Add(new ObjectCreatorObject(Services));
      GameObjectService.Objects.Add(new LavaBallsObject(Services));
      GameObjectService.Objects.Add(new FogObject(Services));
      GameObjectService.Objects.Add(new StaticObject(Services, "Barrier/Barrier", 0.9f, new Pose(new Vector3F(0, 0, -2))));
      GameObjectService.Objects.Add(new StaticObject(Services, "Barrier/Cylinder", 0.9f, new Pose(new Vector3F(3, 0, 0), QuaternionF.CreateRotationY(MathHelper.ToRadians(-20)))));
      GameObjectService.Objects.Add(new StaticSkyObject(Services));

      // Add a few palm trees.
      Random random = new Random(12345);
      for (int i = 0; i < 10; i++)
      {
        Vector3F position = new Vector3F(random.NextFloat(-3, -8), 0, random.NextFloat(0, -5));
        Matrix33F orientation = Matrix33F.CreateRotationY(random.NextFloat(0, ConstantsF.TwoPi));
        float scale = random.NextFloat(0.5f, 1.2f);
        GameObjectService.Objects.Add(new StaticObject(Services, "PalmTree/palm_tree", scale, new Pose(position, orientation)));
      }
    }
예제 #2
0
	void CheckModes()
	{
		
		mode = Mode.LOCAL;

		switch(players.Length)
		{
			case 2:
				splitScreen = SplitScreen.TWO;
			break;

			case 3:
				splitScreen = SplitScreen.THREE;
			break;

			case 4:
				splitScreen = SplitScreen.FOUR;
			break;

			default:
				splitScreen = SplitScreen.SINGLE;
			break;
		}
	}
예제 #3
0
    //Make the HUD scale down more for 3-4 players.
    void Start()
    {
        splitScreen = GameObject.Find("SplitScreenHandler").GetComponent <SplitScreen>();

        canvas = gameObject.GetComponent <CanvasScaler>();
    }
예제 #4
0
        /// <summary>
        /// Event handler for when the Ungulate menu entry is selected.
        /// </summary>
        //void UngulateMenuEntrySelected(object sender, PlayerIndexEventArgs e)
        //{
        //    currentUngulate++;
        //    if (currentUngulate > Ungulate.Llama)
        //        currentUngulate = 0;
        //    SetMenuEntryText();
        //}
        /// <summary>
        /// Event handler for when the Language menu entry is selected.
        /// </summary>
        //void LanguageMenuEntrySelected(object sender, PlayerIndexEventArgs e)
        //{
        //    currentLanguage = (currentLanguage + 1) % languages.Length;
        //    SetMenuEntryText();
        //}
        /// <summary>
        /// Event handler for when the Frobnicate menu entry is selected.
        /// </summary>
        //void FrobnicateMenuEntrySelected(object sender, PlayerIndexEventArgs e)
        //{
        //    frobnicate = !frobnicate;
        //    SetMenuEntryText();
        //}
        /// <summary>
        /// Event handler for when the Elf menu entry is selected.
        /// </summary>
        //void ElfMenuEntrySelected(object sender, PlayerIndexEventArgs e)
        //{
        //    elf++;
        //    SetMenuEntryText();
        //}
        void SplitScreenMenuEntrySelected(object sender, PlayerIndexEventArgs e)
        {
            currentSplitScreen++;

            if (currentSplitScreen > SplitScreen.Vertical)
                currentSplitScreen = 0;

            SetMenuEntryText();
        }
예제 #5
0
    // Start is called before the first frame update
    void Start()
    {
        if (pauseCanvas == null)
        {
            pauseCanvas = GameObject.FindWithTag("PauseMenu");
        }
        //PlayerAssign.IsPlayerTwo = true;
        CurrentObject = Instantiate <GameObject>(RedPrefab, spawnPosTeam1[0]);
        CurrentObject.transform.position = spawnPosTeam1[0].position;
        CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().PlayerNumber = 1;
        CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().HUD.color    = new Color(255, 0, 0);
        SplitRef                  = FindObjectOfType <SplitScreen>();
        SplitRef.Player1          = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().cam;
        SplitRef.Player1Animation = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().AnimationCam;
        CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().pauseCanvas = pauseCanvas;
        if (PlayerAssign.Player1Material == null)
        {
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = Red;
        }
        else
        {
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = PlayerAssign.Player1Material;
        }

        CurrentObject = Instantiate <GameObject>(BluepreFab, spawnPosTeam2[0]);
        CurrentObject.transform.position = spawnPosTeam2[0].position;
        CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().HUD.color    = new Color(0, 0, 255);
        CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().PlayerNumber = 2;
        SplitRef.Player2          = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().cam;
        SplitRef.Player2Animation = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().AnimationCam;
        CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().pauseCanvas = pauseCanvas;

        if (PlayerAssign.Player2Material == null)
        {
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = Blue;
        }
        else
        {
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = PlayerAssign.Player2Material;
        }

        //Assign the main cameras of the objects to the splitscreen.
        if (PlayerAssign.IsPlayerTwo)
        {
            pauseCanvas.SetActive(false);
            return;
        }
        else
        {
            CurrentObject = Instantiate <GameObject>(RedPrefab, spawnPosTeam1[1]);
            CurrentObject.transform.position = spawnPosTeam1[1].position;
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().PlayerNumber = 3;
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().HUD.color    = new Color(255, 0, 0);
            SplitRef.Player3          = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().cam;
            SplitRef.Player3Animation = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().AnimationCam;
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().pauseCanvas = pauseCanvas;
            if (PlayerAssign.Player3Material == null)
            {
                CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = Red;
            }
            else
            {
                CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = PlayerAssign.Player3Material;
            }
            CurrentObject = Instantiate <GameObject>(BluepreFab, spawnPosTeam2[1]);
            CurrentObject.transform.position = spawnPosTeam2[1].position;
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().PlayerNumber = 4;
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().HUD.color    = new Color(0, 0, 255);
            SplitRef.Player4          = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().cam;
            SplitRef.Player4Animation = CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().AnimationCam;
            CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().pauseCanvas = pauseCanvas;
            if (PlayerAssign.Player4Material == null)
            {
                CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = Blue;
            }
            else
            {
                CurrentObject.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().Mesh.material = PlayerAssign.Player4Material;
            }
            pauseCanvas.SetActive(false);
        }
    }