Como fazer o Player olhar para o Inimigo?
4 participantes
Página 1 de 1
Como fazer o Player olhar para o Inimigo?
Galera Preciso de uma Ajuda, eu tenho uma Script que faz o Player Olhar para o Inimigo Pela tag Inimigo,
porem quando eu faço mais inimigo . ele só olha para o Primeiro Inimigo Criado, ele ignora os outros.
Resumindo , eu queria que se tivesse um inimigo mais perto ele olhasse para ele, e não para oque está longe.
Exemplo: 1 inimigo está a 100m do player e o inimigo 2 a 10m do player.
se o player está pertinho do 2 Inimigo ele não olha para ele.. so para o inimigo 1 que está bem longe..
Objetivo era olhar para atacar o player. Pois o jogo e 3d terceira pessoas, e eu queria que ele ficasse bem na frente dele para poder atacar..
Por favor aguardo Respostas!
porem quando eu faço mais inimigo . ele só olha para o Primeiro Inimigo Criado, ele ignora os outros.
Resumindo , eu queria que se tivesse um inimigo mais perto ele olhasse para ele, e não para oque está longe.
Exemplo: 1 inimigo está a 100m do player e o inimigo 2 a 10m do player.
se o player está pertinho do 2 Inimigo ele não olha para ele.. so para o inimigo 1 que está bem longe..
Objetivo era olhar para atacar o player. Pois o jogo e 3d terceira pessoas, e eu queria que ele ficasse bem na frente dele para poder atacar..
- Código:
#pragma strict
var Target : Transform;
var target : Transform; //the enemy's target
var Damping = 6.0;
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var distancia : float;
var distanciaInimigo : float;
var Player : GameObject;
var Inimigos : GameObject;
var distanciaparaseguir : float;
var permitido : int =0;
var myTransform : Transform; //current transform data of this enemy
function Awake()
{
myTransform = transform; //cache transform data for easy access/preformance
}
function Start () {
target = GameObject.FindWithTag("Inimigo").transform;
Target = GameObject.FindWithTag("Inimigo").transform; //target the player
Player = GameObject.FindWithTag ("Player");
Inimigos = GameObject.FindWithTag ("Inimigo");
}
function Update () {
var rotation2 = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation2, Time.deltaTime * Damping);
distancia = Vector3.Distance (Player.transform.position, transform.position);
distanciaInimigo = Vector3.Distance (Inimigos.transform.position, transform.position);
if (distanciaInimigo <= distanciaparaseguir ) {
permitido = 1;
} else {
permitido = 0;
}
if (permitido == 1){
var rotation = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
}
}
Por favor aguardo Respostas!
Re: Como fazer o Player olhar para o Inimigo?
Cara.. Eu não sei programar em Java Script. Mais vou te falar uma logica pra voce testar!
Faça cada inimigo emitir um raycast em direção ao player. Esse raycast, vai mandar a distancia dele em relação ao player, e se a distancia for a menor de todas, ele vai mandar o seu Transform para o script do player. Daí, é so usar o lookat no player para o inimigo. Posso explicar melhor se quiser!
Faça cada inimigo emitir um raycast em direção ao player. Esse raycast, vai mandar a distancia dele em relação ao player, e se a distancia for a menor de todas, ele vai mandar o seu Transform para o script do player. Daí, é so usar o lookat no player para o inimigo. Posso explicar melhor se quiser!
Re: Como fazer o Player olhar para o Inimigo?
marcos4503 escreveu:Cara.. Eu não sei programar em Java Script. Mais vou te falar uma logica pra voce testar!
Faça cada inimigo emitir um raycast em direção ao player. Esse raycast, vai mandar a distancia dele em relação ao player, e se a distancia for a menor de todas, ele vai mandar o seu Transform para o script do player. Daí, é so usar o lookat no player para o inimigo. Posso explicar melhor se quiser!
poxa to muito interessado nisso se poder me ajudar, vou ficar muito grato. Se quiser me Adicionar No Watts (15) 99676-8281 ou Se Preferir me Facebook > facebook. com/felipecirineu
Vou ficar muito feliz..
Re: Como fazer o Player olhar para o Inimigo?
Cara usa o IK Inverse kenematic procura no site da Unity tem um script bem explicado e não é tão difícil de entender
Re: Como fazer o Player olhar para o Inimigo?
PROBLEMA COM MUITA DIFICULDADE RESOLVIDO , quero Agradecer a Marcos que não me Ajudou como eu precisava mais oque mais chegou perto de me ajudar. fico triste pela comunidade não ter conseguido me ajudar.. pois perdi 15 horas para resolver um problema que para muito aqui e fácil tenho certeza disso.
vou deixar aqui um maneiro que conseguir resolver o problema:
Primeiro passo tiver que como muita dificuldade o mesmo código que postei só que em C#, o mesmo era JS:
Irei disponibilizar para voces abaixo:
CÓDIGO DO INIMIGO:
Código DO PLAYER:
PODE SER QUE TENHA ERROS DE ORTOGRAFIA E VARIAS VARIAVEIS QUE NÃO ESTÁ SENDO UTILIZADO EU COPIE E COLEI SÓ AS PARTE IMPORTANTE , 99% QUE VAI FUNCIONAR DESSE JEITO MESMO, CASO NÃO FUNCIONE E SÓ PEDIR EU PASSO O CÓDIGO COMPLETO QUE EU USO.
Espero que Seja Útil para voces.!
vou deixar aqui um maneiro que conseguir resolver o problema:
Primeiro passo tiver que como muita dificuldade o mesmo código que postei só que em C#, o mesmo era JS:
Irei disponibilizar para voces abaixo:
CÓDIGO DO INIMIGO:
- Código:
using UnityEngine;
using System.Collections;
public class RayCastcollider : MonoBehaviour {
public float distancia =6;
public RaycastHit alvo;
public bool alvoAvistado = false;
public Transform target;
public float Damping = 6.0f;
public float distancia2;
public float rotationSpeed = 3;
public Transform target2;
public Transform myTransform;
public static bool permitido;
public static Transform targetTransform;
void Start () {
target = GameObject.FindWithTag("Player").transform;
target2 = GameObject.FindWithTag("Fire").transform;
myTransform = gameObject.transform;
}
void Update () {
distancia2 = Vector3.Distance (target.position, transform.position);
if(distancia2 <= distancia){
//distancia DO PLAYER COM INIMIGO PERMITIDA;
permitido = true;
targetTransform = myTransform;
}
}
Código DO PLAYER:
- Código:
using UnityEngine;
using System.Collections;
public class VidaPlayer : MonoBehaviour {
public static bool RecebendoDano; //VARIAVEL ESTATICA QUE INDICA SE ESTA RECEBENDO DANO OU NAO
public float tempoPorAtaque = 1.5f; // TEMPO MINIMO ENTRE CADA ATAQUE QUE O INIMIGO PODE DAR
private float cronometroDeAtaque; // CRONOMETRO QUE CONTROLA O TEMPO DOS ATAQUES
public int VidaDoPlayer = 100; // VIDA DO PERSONAGEM
public int DanoPorAtaque = 40;
public Transform target;
public Transform myTransform;
public float Damping = 6.0f;
public float rotationSpeed = 3;
public float moveSpeed = 3;
public Transform malha;
public GameObject Player;
public static Transform Player2;
void Start (){
target = RayCastcollider.targetTransform;
Player2 = Player.transform;
RecebendoDano = false; // A VARIAVEL RecebendoDano RECEBE FALSO
}
void Update (){
target = RayCastcollider.targetTransform;
if (RayCastcollider.permitido) {
lookAt ();
}
void Awake()
{
myTransform = transform; //cache transform data for easy access/preformance
}
void lookAt (){
if (target) {
var rotation = Quaternion.LookRotation (target.position - transform.position);
transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * Damping);
myTransform.rotation = Quaternion.Slerp (myTransform.rotation,
Quaternion.LookRotation (target.position - myTransform.position), rotationSpeed * Time.deltaTime);
} else {
}
}
PODE SER QUE TENHA ERROS DE ORTOGRAFIA E VARIAS VARIAVEIS QUE NÃO ESTÁ SENDO UTILIZADO EU COPIE E COLEI SÓ AS PARTE IMPORTANTE , 99% QUE VAI FUNCIONAR DESSE JEITO MESMO, CASO NÃO FUNCIONE E SÓ PEDIR EU PASSO O CÓDIGO COMPLETO QUE EU USO.
Espero que Seja Útil para voces.!
Re: Como fazer o Player olhar para o Inimigo?
Desculpa ai parceiro, eu não entendi muito bem o que voce queria... Tipo.. Acho que se voce tivesse mencionado mais condições, sabe? Descrever mais detalhadamente, com prints e tal... Eu tenho certeza que eu teria conseguido montar uma boa lógica. Fora o fato de eu estar andando ocupado com um novo projeto para android, aprendendo PHP e MySql, e tambem não saber programar em java script kkkkkk
Fico feliz de voce ter conseguido resolver o seu problema. A comunidade daqui, é boa, já me ajudaram muitas vezes com coisas que eu teria desistido se não tivessem me mostrado o caminho... Se voce precisar de algo, pode postar aqui no forum denovo, porque tenho certeza que vai aparecer uma solução. Pode demorar 1 ou 2 dias até mais vai aparecer. Se voce descrever tudo certinho e tal, aparece uma solução no mesmo dia, a galera daqui estuda bastante e tem muito conhecimento pra transmitir!
Obrigado!
Fico feliz de voce ter conseguido resolver o seu problema. A comunidade daqui, é boa, já me ajudaram muitas vezes com coisas que eu teria desistido se não tivessem me mostrado o caminho... Se voce precisar de algo, pode postar aqui no forum denovo, porque tenho certeza que vai aparecer uma solução. Pode demorar 1 ou 2 dias até mais vai aparecer. Se voce descrever tudo certinho e tal, aparece uma solução no mesmo dia, a galera daqui estuda bastante e tem muito conhecimento pra transmitir!
Obrigado!
Re: Como fazer o Player olhar para o Inimigo?
- Código:
#pragma strict
private var Inimigos : GameObject[];
private var Dist : float[];
public var Player: GameObject;
private var Alvo: GameObject;
private var alvoroteition : Quaternion;
//Valores
private var Menor: float;
private var Maior: float;
function Start(){
Inimigos = GameObject.FindGameObjectsWithTag("Inimigo");
Dist = new float[Inimigos.Length];
}
function Update(){
for(var i:int = 0; i < Inimigos.Length; i ++ ){ //Pegar a menor posi
Dist[i] = Vector3.Distance(Inimigos[i].transform.position, Player.transform.position);
if(i == 0){
Maior = Dist[i];
Menor = Dist[i];
}
if(Dist[i] > Maior){
Maior = Dist[i];
}
if(Dist[i] < Menor){
Menor = Dist[i];
Alvo = Inimigos[i];
}
}
alvoroteition = Quaternion.LookRotation(Player.transform.position - Alvo.transform.position, Vector3.up);
Player.transform.rotation = Quaternion.Slerp(Player.transform.rotation, alvoroteition , Time.deltaTime * 4);
}
C#:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InimigoDeMenorPosi : MonoBehaviour {
public GameObject[] Inimigos;
public float[] Dist;
public GameObject Player;
public GameObject Alvo;
public Quaternion alvoroteition;
//Valores
public float Menor;
public float Maior;
void Start(){
Inimigos = GameObject.FindGameObjectsWithTag("Inimigo");
Dist = new float[Inimigos.Length];
}
void Update(){
for(int i = 0; i < Inimigos.Length; i ++ ){ //Pegar a menor posi
Dist[i] = Vector3.Distance(Inimigos[i].transform.position, Player.transform.position);
if(i == 0){
Maior = Dist[i];
Menor = Dist[i];
}
if(Dist[i] > Maior){
Maior = Dist[i];
}
if(Dist[i] < Menor){
Menor = Dist[i];
Alvo = Inimigos[i];
}
}
alvoroteition = Quaternion.LookRotation(Player.transform.position - Alvo.transform.position, Vector3.up);
Player.transform.rotation = Quaternion.Slerp(Player.transform.rotation, alvoroteition , Time.deltaTime * 4);
}
}
Tópicos semelhantes
» Alquem tem alguma ideia de como fazer o Player tipo a cabeça olhar para o seu inimigo?
» Unity2D - Como fazer a IA do inimigo patrulhar e quando chegar perto do player, seguir ele
» Como fazer um script para que se o inimigo ver você cancela a missão?
» Tem como fazer o inimigo andar até dar de cara com o player?
» Alguém sabe fazer uma AI para o inimigo seguir o Player em um jogo Top Down
» Unity2D - Como fazer a IA do inimigo patrulhar e quando chegar perto do player, seguir ele
» Como fazer um script para que se o inimigo ver você cancela a missão?
» Tem como fazer o inimigo andar até dar de cara com o player?
» Alguém sabe fazer uma AI para o inimigo seguir o Player em um jogo Top Down
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos