Personagem seguir o jogador
2 participantes
Página 1 de 1
Personagem seguir o jogador
Tenho um jogo 3D que estou desenvolvendo como intuito de obtenção de notas de minha faculdade. Neste jogo eu controlo dois personagens, um humano normal e uma animal (Digamos cachorro, para não dar spoilers). Eu quero fazer um código em que este animal siga o jogador. Todo tutorial que encontro é para inimigos seguir e atacar o jogador e eles nunca param de andar até ele. Um exemplo do que quero é o Residente Evil 4: A Ashley segue o tempo todo o Leon e fica apenas atras dele, só andando quando o jogador anda. Quero que este animal faça o mesmo, além de poder trocar o controle para que eu possa controlá-lo e o humano passe a seguir este animal. Toda a animação já está feita, só quero ajuda com isso e já posso controlar o humano (Alias, seu movimento é apenas horizontal: Esquerda e direita). Alguém pode me ajudar? O script está sendo feita na Unity 3D em C#. Urgente!
RickEsfor- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 2
Áreas de atuação : Estou fazendo Faculdade de Jogos Digitais, mas, sou um pouco leigo e sei pouco das coisas.
Respeito as regras :
Re: Personagem seguir o jogador
Esse "animal" grita Leon! HELP ME LEON!!!! a cada 2 segundos? huahuahua
Você diz ter visto tutoriais que o inimigo anda até o player e ataca, pois é só remover a função de atacar. Ah, e pra o npc não "entrar" no seu personagem, na checagem da distância, aumente esse valor de forma que o npc pare antes.
Se quiser algo mais avançado, pode usar uma técnica que a Naughty Dog usou no The Last of Us, essa técnica consiste em disparar alguns Raycasts em torno do jogador, pra identificar obstáculos, dessa forma, o animal/npc pode escolher entre um dos pontos que não foi detectado nenhum obstáculo como seu destino, fora que fica muito mais dinâmico do que só ficar exatamente atrás do personagem.
Se teu inglês ajudar, vale muito a pena assistir essa palestra da GDC
Você diz ter visto tutoriais que o inimigo anda até o player e ataca, pois é só remover a função de atacar. Ah, e pra o npc não "entrar" no seu personagem, na checagem da distância, aumente esse valor de forma que o npc pare antes.
- Código:
se distancia < 1.5f
//para de andar
Se quiser algo mais avançado, pode usar uma técnica que a Naughty Dog usou no The Last of Us, essa técnica consiste em disparar alguns Raycasts em torno do jogador, pra identificar obstáculos, dessa forma, o animal/npc pode escolher entre um dos pontos que não foi detectado nenhum obstáculo como seu destino, fora que fica muito mais dinâmico do que só ficar exatamente atrás do personagem.
Se teu inglês ajudar, vale muito a pena assistir essa palestra da GDC
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Personagem seguir o jogador
Vou tentar usar a checagem, muito obrigado. No caso de controlar o animal (Não, ele não vai gritar Leon kkkkkkkk) como eu entrego o controle total para ele e o humano passe a seguir (Ou seja, o contrario acontece)?
PS: Essas dúvidas são para conseguir terminar a programação para a minha faculdade, ou seja, AaaRRRRGH!!!! kkkkkkkkkk
PS: Essas dúvidas são para conseguir terminar a programação para a minha faculdade, ou seja, AaaRRRRGH!!!! kkkkkkkkkk
RickEsfor- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 2
Áreas de atuação : Estou fazendo Faculdade de Jogos Digitais, mas, sou um pouco leigo e sei pouco das coisas.
Respeito as regras :
Re: Personagem seguir o jogador
Ambos podem ter um script de IA que é ativado ou desativado conforme você escolhe controlar um ou outro.
Dá pra montar uma IA bem básica usando apenas Navmesh, e essas checagens básicas de distância.
Posta aí o script que está usando pra eu ter uma ideia se precisa de muita adaptação, use o botão Script que fica acima de onde você escreve a postagem, pra ficar organizado ^^
Dá pra montar uma IA bem básica usando apenas Navmesh, e essas checagens básicas de distância.
Posta aí o script que está usando pra eu ter uma ideia se precisa de muita adaptação, use o botão Script que fica acima de onde você escreve a postagem, pra ficar organizado ^^
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Personagem seguir o jogador
- Código:
[RequireComponent(typeof(Animator))]
public class Control : MonoBehaviour
{
private Animator Animation;
public float movespeed = 500.0f;
public Vector3 pos;
void Start()
{
Animation = GetComponent<Animator>();
}
void Update()
{
float inputX = Input.GetAxis("Horizontal");
//float inputY = Input.GetAxis("Vertical");
Animation.SetFloat("Horizontal", Input.GetAxis("Horizontal"));
pos = transform.position;
pos.x += Input.GetAxis("Horizontal") * Time.deltaTime;
transform.position = pos;
}
}
RickEsfor- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 2
Áreas de atuação : Estou fazendo Faculdade de Jogos Digitais, mas, sou um pouco leigo e sei pouco das coisas.
Respeito as regras :
Re: Personagem seguir o jogador
- Código:
public class Trocar : MonoBehaviour {
public bool pers;
// Use this for initialization
void Start () {
pers = true;
}
// Update is called once per frame
void Update () {
if(Input.GetButtonDown("Fire2")){
if (pers == true) {
pers = false;
Debug.Log ("Trocou 2");
}else{
pers = true;
Debug.Log ("Trocou 1");
}
}
}
RickEsfor- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 2
Áreas de atuação : Estou fazendo Faculdade de Jogos Digitais, mas, sou um pouco leigo e sei pouco das coisas.
Respeito as regras :
Re: Personagem seguir o jogador
movespeed nunca é usado;
inputX também não;
normalmente a direção da frente é o eixo Z, você está alterando a posição em X, o que não faz sentido a menos que seu player esteja com a rotação desconfigurada.
A movimentação não está meio travada não?
Olha, tenta seguir esse tutorial, tem 80% do que falei ali em cima, com isso você já vai ter o personagem andando sozinho (IA), e ao invés da posição do click, você pode substituir pela posição do player+algum valor;
É bem melhor que apenas seguir usando um LookAt() da vida, pois nem sempre o caminho até o parceiro será uma linha reta.
inputX também não;
normalmente a direção da frente é o eixo Z, você está alterando a posição em X, o que não faz sentido a menos que seu player esteja com a rotação desconfigurada.
A movimentação não está meio travada não?
Olha, tenta seguir esse tutorial, tem 80% do que falei ali em cima, com isso você já vai ter o personagem andando sozinho (IA), e ao invés da posição do click, você pode substituir pela posição do player+algum valor;
É bem melhor que apenas seguir usando um LookAt() da vida, pois nem sempre o caminho até o parceiro será uma linha reta.
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Personagem seguir o jogador
Estava usando apenas para uma movimentação horizontal. Seria um jogo de plataforma em duas direções, então se movem no eixo X. Não senti nenhuma travada na animação além do idle só funcionar para um lado. Assim que eu paro de andar para a esquerda o idle volta a animar para a direita.
RickEsfor- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 2
Áreas de atuação : Estou fazendo Faculdade de Jogos Digitais, mas, sou um pouco leigo e sei pouco das coisas.
Respeito as regras :
Re: Personagem seguir o jogador
Bom, isso explica muita coisa kkk
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Personagem seguir o jogador
Eu fiz um projeto usando o Character Controller IA que vem no Standard Assets, a unica mudança que fiz no prefab padrão foi acrescentar o Script Third Person User Control, que vem no personagem de terceira pessoa não-IA.
Então em cada um dos personagens, tem um campo no Script da IA pedindo o destino, nesse campo eu joguei o outro personagem.
Assim cada um tem o outro como destino.
Agora só falta ativar e desativar os componentes conforme necessário. então fiz esse script
Cada personagem recebe esse script, e no inspector, marco a opção de qual será o boneco que o jogador iniciará controlando.
Depois se quiser mudar de personagem dentro do jogo, basta apertar Q.
Ele ativa o controle do Usuário no personagem que você vai controlar, e desativa tudo relacionado com a IA. o outro personagem faz o contrário, e como o destino dele é o seu boneco, tudo funciona como deve.
Então em cada um dos personagens, tem um campo no Script da IA pedindo o destino, nesse campo eu joguei o outro personagem.
Assim cada um tem o outro como destino.
Agora só falta ativar e desativar os componentes conforme necessário. então fiz esse script
- Código:
using UnityEngine;
using UnityEngine.AI;
public class MudarPersonagem : MonoBehaviour
{
public bool jogadorControlando;
private void Start()
{
AlternarPersonagem();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
AlternarPersonagem();
}
}
private void AlternarPersonagem()
{
if (jogadorControlando)
{
GetComponent<UnityStandardAssets.Characters.ThirdPerson.ThirdPersonUserControl>().enabled = true;
GetComponent<UnityStandardAssets.Characters.ThirdPerson.AICharacterControl>().enabled = false;
GetComponent<NavMeshAgent>().enabled = false;
}
else
{
GetComponent<UnityStandardAssets.Characters.ThirdPerson.ThirdPersonUserControl>().enabled = false;
GetComponent<UnityStandardAssets.Characters.ThirdPerson.AICharacterControl>().enabled = true;
GetComponent<NavMeshAgent>().enabled = true;
}
jogadorControlando = !jogadorControlando;
}
}
Cada personagem recebe esse script, e no inspector, marco a opção de qual será o boneco que o jogador iniciará controlando.
Depois se quiser mudar de personagem dentro do jogo, basta apertar Q.
Ele ativa o controle do Usuário no personagem que você vai controlar, e desativa tudo relacionado com a IA. o outro personagem faz o contrário, e como o destino dele é o seu boneco, tudo funciona como deve.
Última edição por Fagner em Qua Dez 30, 2020 11:13 pm, editado 1 vez(es)
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Personagem seguir o jogador
- Fagner:
- Fagner escreveu:Eu fiz um projeto usando o Character Controller IA que vem no Standard Assets, a unica mudança que fiz no prefab padrão foi acrescentar o Script Third Person User Control, que vem no personagem de terceira pessoa não-IA.
Então em cada um dos personagens, tem um campo no Script da IA pedindo o destino, nesse campo eu joguei o outro personagem.
Assim cada um tem o outro como destino.
Agora só falta ativar e desativar os componentes conforme necessário. então fiz esse script- Código:
using UnityEngine;
using UnityEngine.AI;
public class MudarPersonagem : MonoBehaviour
{
public bool jogadorControlando;
private void Start()
{
AlternarPersonagem();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
AlternarPersonagem();
}
}
private void AlternarPersonagem()
{
if (jogadorControlando)
{
GetComponent<UnityStandardAssets.Characters.ThirdPerson.ThirdPersonUserControl>().enabled = true;
GetComponent<UnityStandardAssets.Characters.ThirdPerson.AICharacterControl>().enabled = false;
GetComponent<NavMeshAgent>().enabled = false;
}
else
{
GetComponent<UnityStandardAssets.Characters.ThirdPerson.ThirdPersonUserControl>().enabled = false;
GetComponent<UnityStandardAssets.Characters.ThirdPerson.AICharacterControl>().enabled = true;
GetComponent<NavMeshAgent>().enabled = true;
}
jogadorControlando = !jogadorControlando;
}
}
Cada personagem recebe esse script, e no inspector, marco a opção de qual será o boneco que o jogador iniciará controlando.
Depois se quiser mudar de personagem dentro do jogo, basta apertar Q.
Ele ativa o controle do Usuário no personagem que você vai controlar, e desativa tudo relacionado com a IA. o outro personagem faz o contrário, e como o destino dele é o seu boneco, tudo funciona como deve.
RickEsfor- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 2
Áreas de atuação : Estou fazendo Faculdade de Jogos Digitais, mas, sou um pouco leigo e sei pouco das coisas.
Respeito as regras :
Tópicos semelhantes
» IA para inimigo seguir o jogador ( Plataforma )
» Como fazer a câmera parar de seguir a altura do pulo do jogador no script SmoothFollow dos Assets Standards da Unity ?
» Inimigo seguir o jogador sem usar o NavMesh
» Como faz a câmera seguir e gira em torno do jogador
» Como posso fazer o carro da policia seguir o jogador
» Como fazer a câmera parar de seguir a altura do pulo do jogador no script SmoothFollow dos Assets Standards da Unity ?
» Inimigo seguir o jogador sem usar o NavMesh
» Como faz a câmera seguir e gira em torno do jogador
» Como posso fazer o carro da policia seguir o jogador
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos