Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





problemas con el basetranslationoffset del enemy pawn y con animaciones (UDK)

Iniciado por titobruni, 13 de Junio de 2012, 12:35:11 PM

« anterior - próximo »

titobruni

hola expertos!

bueno, continuo trabajando en mi nuevo proyecto: a classical survival horror, que he posteado en el subforo de trabajos en procesos, pero ahora me encuentro estancado y llevo cerca de 3 días sin encontrar la solucionpara el problema que os planteo...

vereis, trabajo en UDK:

1-tengo mi Enemy Pawn y mi Enemi AI, y me ocurre un problema extraño... cuando el el niuvel empieza, el enemy pawn comienza a seguir al jugador, con su animacion d ecaminar, todo correcto.. pero al llegar al player, y cuando hace contacto con el, el enemigo se desplaza unas cuantas unidades bajo el suelo, cuando se pone en posicion de descanso...

a que es debido esto? tengo todas las animacione sperfectamente alineadas e importadas desde el ·d studio, tb, dentro del animset del enemigo, las naimaciones estan bien.. pero pq hace esop al chocar con el player?, ademas, al comenzar el nivel, si el enemigo no ve al player, este esta en posicion de descanso de manera correcta, sin traspasar el suelo y cuando comienza a nadar hacia el jugador, tb sigue ok.. repito, el problema solo está cuando hace losision con el player...


y el otro gran problema: como hago para que el enemigo ejecute la naimacion de ataque una vez toque al player? tengo en el script, que cuando el enemigo toca al player, suene el sonido de ataque, quite vida al player, pero no se como es la sentencia de animacion de atque (que tyb la tengo metidoa en el animtree de forma correcta, creo)

os dejo un enelace a mi blog, donde explico mejor esto y os pongo imagenes de las configuracion de animtree, así como los scripts del enemigo.
www.proyectofalconcrest.blogspot.com/

necesito vuestra ayuda! pq estoy obstinado con esto y hasta que no lo solucione no puedo avanzar! (o no quiero, ya que en todfos los proyectos, cuando llego a este punto, desperado, los termino dejando!!)

un saludo y gracias!

Xafi


Gallo

Seguramente seapor el coloider ke hace de rigid body. Yo quitaria las fisicas rogid body entre el jugador y el enemy  y usrtia el collider solo para detectar cuando se tocan.

titobruni

al final conegui solucionar los dos temas:

1.el basetraslationoffset lo soluciones bajando el radio de los enemigos, aunq es un arreglo chapucero y seguro me da problemas despues con las aramas.

2.conegui controlar las niamciones!!

EL CODIGO DEL CONTROLLER AI:

class Zombie2Bot extends GameAIController;

var Pawn thePlayer;

simulated event PostBeginPlay()
{
super.PostBeginPlay();
PlaySound(SoundCue'Survival_SoundsMonsters.WAV.motel_monsters1_cue');
}






event SeePlayer(Pawn SeenPlayer)
{
  if (thePlayer ==none)
  {
thePlayer = SeenPlayer;
GoToState('Follow');
  }
}



state Follow
{

Begin:

if (thePlayer != None) 
{
MoveTo(thePlayer.Location);
GoToState('Looking');
}

}


state Looking
{
Begin:
  if (thePlayer != None)  // If we seen a player
{
MoveTo(thePlayer.Location); // Move directly to the players location
GoToState('Follow');  // when we get there
}

}


defaultproperties
{
}


EL CODE DEL PAWN

class Zombie2Pawn extends UTPawn
Placeable;




var Pawn P;
var() int DamageAmount; 





var AnimNodeSlot test;





simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp)
{
super.PostInitAnimTree(SkelComp);

if (SkelComp == Mesh)
{
test = AnimNodeSlot(Mesh.FindAnimNode('ESTADOS'));
}
}






simulated function PostBeginPlay()
{
   super.PostBeginPlay();

   //wake the physics up
   SetPhysics(PHYS_Falling);
}




//over-ride epics silly character stuff
simulated function SetCharacterClassFromInfo(class<UTFamilyInfo> Info)
{
Return;
}






simulated event Bump( Actor Other, PrimitiveComponent OtherComp, Vector HitNormal )
{
`Log("Bump");

     Super.Bump( Other, OtherComp, HitNormal );

if ( (Other == None) || Other.bStatic )
return;

  P = Pawn(Other); //the pawn we might have bumped into

if ( P != None)  //if we hit a pawn
{
    if (Zombie2Pawn(Other) != None) 
    {
       Return;
    }
    else
    {
    SetTimer(0.1, false, 'EatSlow');
    }
     }
}






simulated function EatSlow()
{
    P.Health -= DamageAmount;
PlaySound(SoundCue'Survival_SoundsMonsters.Atack.Attack_ramdom');
PlaySound(SoundCue'Survival_SoundsMonsters.Atack.Attack_bite');

test.PlayCustomAnim('attack2', 1.0f, 0.1f, 0.1f, false, false, ); //Play attack animation


    if (P.Health <= 0)
     {
     P.Destroy();  //kill it
     }
}




defaultproperties
{

// Cylinder for navigation
  Begin Object name=CollisionCylinder

CollisionHeight=+20.000000
CollisionRadius=+2.500000

  End Object

Begin Object Name=WPawnSkeletalMeshComponent

Scale=2.5
SkeletalMesh=SkeletalMesh'Survival_monsters.Mesh.dino_SkeletalMesh'
PhysicsAsset=PhysicsAsset'Survival_monsters.Mesh.dino_Physics'
AnimSets(0)=AnimSet'Survival_monsters.Mesh.dino_AnimSet'
AnimtreeTemplate=AnimTree'Survival_monsters.Mesh.dino_AnimTree'
End Object

RagdollLifespan=180.0
JumpZ=0

AirSpeed=200
GroundSpeed=60

ControllerClass=class'Zombie1Bot'
bDontPossess=false

DamageAmount=10

WeaponSocket=linterna
WeaponSocket2=DualWeaponPoint
HeadBone=b_Head
PawnEffectSockets[0]=L_JB
PawnEffectSockets[1]=R_JB
}


luego ya es solo crear en animtree el ANIMNODESLOT y llamarlo ESTADOS, con dos children 1-para animaciones normales (move, idl, o lo q sea), 2-para ataque

inentare mirar eso q hablais de la colision, gracias!

saludos!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.