Unity 3D Multiplayer Tutorial FPS Photon AI NPCs Parte 9

Unity 3D Multiplayer Tutorial FPS Photon AI NPCs Parte 9

Compártelo con otros

Suscribanse!

0
(0)

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.

Clase 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));
    }
}

Clase 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);
    }
}

Clase 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);
        }
    }
}

Clase 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!

  • Si quieres avanzar a un nuevo nivel en tus proyectos tecnológicos con este plan de suscripción no solamente tendrás acceso a los vídeos e información detallada de tutoriales y temas de intereses dentro de ZoeGeop, sino que también dispondrás de acceso exclusivo a materiales, soporte y recursos de nuestros proyectos en curso los cuales iremos actualizando constantemente para que puedas utilizarlos libremente e implementarlos en tus propios proyectos. Contarás además con 3 sesiones de asesoría a tu proyecto por parte del equipo de ZoeGeop al mes. Nota: Por cada sesión adicional tendrá un costo adicional.
    Si quieres avanzar a un nuevo nivel en tus proyectos tecnológicos con este plan de suscripción no solamente tendrás acceso a los vídeos e información detallada de tutoriales y temas de intereses dentro de ZoeGeop, sino que también dispondrás de acceso exclusivo a materiales, soporte y recursos de nuestros proyectos en curso los cuales iremos actualizando constantemente para que puedas utilizarlos libremente e implementarlos en tus propios proyectos. Contarás además con 1 sesión de asesoría a tu proyecto por parte del equipo de ZoeGeop al mes. Nota: Por cada sesión adicional tendrá un costo adicional.
    Si quieres disfrutar y difundir tus proyectos tecnológicos con este plan de suscripción no solamente tendrás acceso a los vídeos e información detallada de tutoriales y temas de interés dentro de ZoeGeop, sino que también podrás dar a conocer tus proyectos en nuestro marketplace global para que cualquier comprador o donante pueden contribuir al crecimiento de tu proyecto.
¿Quieres publicar tus propios proyectos?. ¡Pues que esperas!

Suscríbete

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.

¿Qué tan útil fue esta publicación?

¡Haz clic en una estrella para calificarla!

Puntuación media 0 / 5. Recuento de votos: 0

No hay votos hasta ahora! Sé el primero en calificar esta publicación.

¡Lamentamos que esta publicación no te haya sido útil!

¡Permítanos mejorar esta publicación!

¿Cuéntanos cómo podemos mejorar esta publicación?

Escrito por 

Founder of ZoeGeop Technologies. Apasionado por la tecnología, emprendedor, investigador y player innato. Creyente de la posibilidad que todos tenemos para lograr lo que nos propongamos con una pizca de enfoque y disciplina.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *