Jump to content
robertofiz

Duda de principiante: sobre profabs encima de terreno

Recommended Posts

Tengo un terreno donde pulula mi personaje y un enemigo que básicamente es el mismo que esta en Standard Assets > characters > AIThirdPersonController. Mi personaje no tiene problemas para moverse, pero mi enemigo (AIThirdPersonController) al caminar ciertas calles (prefabs que esta encima del terreno) parece patinar o andar sobre una moto invisible. No me explico que puede ser. Probé diferentes cosas, como agregarle terrein collider al prefabs que contiene los prefabs de las calles, pero no parece funcionar. El otro tema es que solo ocurre en algunas calles y no en todas. No me explico que puede ser, me tiene desconcertado.

Sospecho que es una duda de principiante, 

Desde ya gracias.

Share this post


Link to post
Share on other sites

Hola, decir simplemente "mover" se puede interpretar de muchas formas y mas si no indicas que componentes tiene tu personaje y el AIthirdpersonController, Si Tu personaje no es identico "en movimiento" al del AIThirdPersonController no se van a mover igual. Supongo que tenes una NavMesh generada y el AIthirdpersonController (no lo conozco) tiene un NavMeshAgent.

Share this post


Link to post
Share on other sites

Hola, gracias por responder. Te comento. Mi personaje es básicamente el mismo que ThirdpersonController y no tiene el NavMeshAgent porque lo manejo yo, pero el AIthirdpersonController sí lo tiene y lo configuré desde navigator con radios 0.3 height 2 y max slope 60. La verdad no entiendo mucho de todo esto.

Cuando hablo de mover digo que se inicia la animación de correr.

Share this post


Link to post
Share on other sites

Hola, el navmeshagent te sirve para mover al objeto que lo tenga respetando una NAvMesh, basicamente indicas el destino , la velocidad, cuando detenerse, etc. No tengo el codigo del AIThirdPersonController (si podrias subirlo mejor, en los paquetes yo tengo uno que se llama "AICharacterControl"), como tiene un AI supongo que lo hará de esta manera. Chequeaste que la navMesh respete tus prefabs de calle? (Window/Navigation), los prefabs deben tener static para que puedas crear la navMesh.

Share this post


Link to post
Share on other sites
https://mega.nz/#!7lwmXTCL 

aca

https://mega.nz/#!7lwmXTCL!QlRl2ROgbNb9r9fcP7o-rx8ty0EzJeDxFkrF1l88RDU 

 

Edited by robertofiz

Share this post


Link to post
Share on other sites

No se porque pasaste todo eso, lo unico que queria era esto:

using System;
using UnityEngine;

namespace UnityStandardAssets.Characters.ThirdPerson
{
    [RequireComponent(typeof (NavMeshAgent))]
    [RequireComponent(typeof (ThirdPersonCharacter))]
    public class AICharacterControl : MonoBehaviour
    {
        public NavMeshAgent agent { get; private set; }             // the navmesh agent required for the path finding
        public ThirdPersonCharacter character { get; private set; } // the character we are controlling
        public Transform target;                                    // target to aim for
        
        private void Start()
        {
            // get the components on the object we need ( should not be null due to require component so no need to check )
            agent = GetComponentInChildren<NavMeshAgent>();
            character = GetComponent<ThirdPersonCharacter>();

	        agent.updateRotation = false;
	        agent.updatePosition = true;
        }


        private void Update()
        {
            if (target != null)
                agent.SetDestination(target.position);

            if (agent.remainingDistance > agent.stoppingDistance)
                character.Move(agent.desiredVelocity, false, false);
            else
                character.Move(Vector3.zero, false, false);
        }
        
        public void SetTarget(Transform target)
        {
            this.target = target;
        }
    }
}

Fijate esta linea:

if (target != null)
                agent.SetDestination(target.position);

NavMeshAgent tiene su metodo para setear un destino y automaticamente moverse (esquiva obstaculos y todo (creo que usa A* pathfinding))

De la referencia:

" You can tell an agent to start calculating a path simply by setting the NavMeshAgent.destination property with the point you want the agent to move to. As soon as the calculation is finished, the agent will automatically move along the path until it reaches its destination. "

Osea que con el target.SetDestination(...) deberia bastar para mover sin problemas siempre que se cumpla lo que te puse en el otro post (que no me respondiste si lo verificaste).

Mi granito de arena, siempre los assets prefabricados de unity traen algun problema y a todo el mundo le gusta arrastrar el prefab y que todo ande, lo mejor que podes hacer es crear tu controller personal que cubra tus necesidades de cero (Player e IA). Proba paso a paso, primero pone a tu personaje un navmeshagent seeteale un destino y fijate si se mueve correctamente (velocidad, las animaciones para despues).

Saludos

Share this post


Link to post
Share on other sites

Tiene que ser algo del terreno y los prefabs de las calles. Todo eso esta como static (las calles y ahora también agregué los edificios) para después darle a  Navigation  y comprobar que esta todo en azul excepto las paredes de los edificios.

Bueno, seguiré mirandolo mañana. Igual, gracias.

Share this post


Link to post
Share on other sites
hace 15 horas, lightbug said:

Chequeaste que la navMesh respete tus prefabs de calle? (Window/Navigation),

parece que era eso, porque estuve tocando los números de navigation y ahora hay calles por las que puede correr. Sin embargo, no sé cómo terminar de configurarlo correctamente porque sigue habiendo calles (prefabs) por los que parece andar como en patines.

Share this post


Link to post
Share on other sites

porque no subis una imagen mejor, no se que es eso de andar en patines. Osea se mueve bien? se anima bien? (animacion y movimiento son cosas distintas). Anda descartando, elimina el terreno y proba el personaje en una calle sola en una escena nueva.

Share this post


Link to post
Share on other sites

Igual esto te puede ayudar o no, pero yo me encontré con un problema similar, la animación de salto se activaba aun en superficies lisas, eso era por que los objetos no pueden estar escalados virtualmente por encima o por debajo de 1,1,1, contra mayor es el escalado mayor es la posibilidad de que el personaje no detecte bien los suelos y paredes Cuando escale el suelo y las paredes físicamente el fallo desaprecio.

Parece ser que hay un componente en los personajes que no detecta bien los objetos escalados. Yo también utilizo el script ThirdPersonCharacter.

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...