En ésta oportunidad hemos creado una mecánica de juego donde implementamos NPC’s con AI para que nuestro juego no sólo pueda funcionar con lógica multijugador con Photon sino que pueda tener jugadores con inteligencia artificial dentro del juego para darle mayor jugabilidad y dinamismo al mismo. Si hay una función multijugador que desea que hagamos, comenta y háganoslo saber.
PlayerMovement
using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { private PhotonView PV; private CharacterController myCC; public float movementSpeed; public float rotationSpeed; // Start is called before the first frame update void Start() { PV = GetComponent<PhotonView>(); myCC = GetComponent<CharacterController>(); } // Update is called once per frame void Update() { if(PV.IsMine && PhotonNetwork.IsConnected) { BasicMovement(); BasicRotation(); } } void BasicMovement() { if(Input.GetKey(KeyCode.W)) { myCC.Move(transform.forward * Time.deltaTime * movementSpeed); } if (Input.GetKey(KeyCode.A)) { myCC.Move(-transform.right * Time.deltaTime * movementSpeed); } if (Input.GetKey(KeyCode.S)) { myCC.Move(-transform.forward * Time.deltaTime * movementSpeed); } if (Input.GetKey(KeyCode.D)) { myCC.Move(transform.right * Time.deltaTime * movementSpeed); } } void BasicRotation() { float mouseX = Input.GetAxis("Mouse X") * Time.deltaTime * rotationSpeed; transform.Rotate(new Vector3(0, mouseX, 0)); } }
AvatarSetup
using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; public class AvatarSetup : MonoBehaviour { private PhotonView PV; public GameObject myCharacter; public int characterValue; // Start is called before the first frame update void Start() { PV = GetComponent<PhotonView>(); if (PV.IsMine) { PV.RPC("RPC_AddCharacter", RpcTarget.AllBuffered, PlayerInfo.PI.mySelectedCharacter); } } [PunRPC] void RPC_AddCharacter(int whichCharacter) { characterValue = whichCharacter; myCharacter = Instantiate(PlayerInfo.PI.allCharacters[whichCharacter], transform.position, transform.rotation, transform); } }
MenuController
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MenuController : MonoBehaviour { public void OnClickCharacterPick(int whichCharacter) { if (PlayerInfo.PI != null) { PlayerInfo.PI.mySelectedCharacter = whichCharacter; PlayerPrefs.SetInt("MyCharacter", whichCharacter); } } }
PlayerInfo
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerInfo : MonoBehaviour { public static PlayerInfo PI; public int mySelectedCharacter; public GameObject[] allCharacters; private void OnEnable() { if (PlayerInfo.PI == null) { PlayerInfo.PI = this; } else { if (PlayerInfo.PI != this) { Destroy(PlayerInfo.PI.gameObject); PlayerInfo.PI = this; } } DontDestroyOnLoad(this.gameObject); } // Start is called before the first frame update void Start() { if (PlayerPrefs.HasKey("MyCharacter")) { mySelectedCharacter = PlayerPrefs.GetInt("MyCharacter"); } else { mySelectedCharacter = 0; PlayerPrefs.SetInt("MyCharacter",mySelectedCharacter); } } }
¿Quieres acceder al proyecto completo?
¡Registrate y hazte Premium!
¿Quieres publicar tus propios proyectos?. ¡Pues que esperas!
ZoeGeop Technologies
MarketPlace
Crea tu cuenta
Suscríbete
[latest-selected-content output=”slider” limit=”4″ date_limit=”1″ date_start=”2″ date_start_type=”months” image=”medium” css=”four-columns tall as-overlay light” type=”post” status=”publish” taxonomy=”category” orderby=”dateD” show_extra=”category” slidermode=”fade” slideslides=”1″ slidescroll=”1″ sliderinfinite=”true” slidercontrols=”true” sliderauto=”true” sliderspeed=”3000″ chrlimit=”120″ url=”yes”]
Suscríbete a nuestro canal de YouTube
Síguenos en nuestro canal de YouTube dedicado a tecnología, marketplace de proyectos tecnológicos, cursos online y tutoriales de desarrollo de videojuegos. Ofrecemos consultoría en desarrollo de software, marketing online, servicios de TI, hosting web, dominios web y más.
Siguenos en Patreon
Si quieres contribuir con cualquier aporte o donación hacia nuestros proyectos y el canal puedes hacerlo a través de nuestra cuenta en Patreon.