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))); } }
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; } }
//Make the HUD scale down more for 3-4 players. void Start() { splitScreen = GameObject.Find("SplitScreenHandler").GetComponent <SplitScreen>(); canvas = gameObject.GetComponent <CanvasScaler>(); }
/// <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(); }
// 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); } }