我只能让npc进行直线行走,遇到障碍避开。 求高手帮我把这个代码修改下,npc能跟踪id,遇到障碍时会停止行走。
我在实体插件上不是很熟悉。也请高手讲解下npc的动作。。
[code][/code]find_way(entid,Float:fOri[3])
{
new Float:vTrace[3],Float:vTraceEnd[3],Float:hitOri[3],Float:Vel[3],Float:angle[3]
velocity_by_aim(entid, 64, vTrace)
vTraceEnd[0] = vTrace[0] + fOri[0]
vTraceEnd[1] = vTrace[1] + fOri[1]
vTraceEnd[2] = vTrace[2] + fOri[2]+25
new hitent=trace_line(entid, fOri, vTraceEnd, hitOri)
new Float:gdis=vector_distance(fOri,hitOri)
velocity_by_aim(entid, 45, vTrace)
vTraceEnd[0] = vTrace[0] + fOri[0]
vTraceEnd[1] = vTrace[1] + fOri[1]
vTraceEnd[2] = vTrace[2] + fOri[2]-45
trace_line(entid, fOri, vTraceEnd, hitOri)
new Float:gdis2=vector_distance(fOri,hitOri)
if( gdis2<43 )
{
entity_get_vector(entid,EV_VEC_origin,fOri)
fOri[2]+=10
entity_set_vector(entid,EV_VEC_origin,fOri)
}
entity_get_vector(entid,EV_VEC_velocity,Vel)
if( hitent || gdis<60 )
{
stop_fake(entid)
entity_get_vector(entid,EV_VEC_v_angle,angle)
new Float:fnum=random_float(-90.0,90.0)
angle[1]+=fnum
angle[1]+=90.0
entity_set_vector(entid,EV_VEC_v_angle,angle)
return
}
if( Vel[0]==0.0 || Vel[1]==0.0 )
{
VelocityByAim(entid,FAKEPLAYERSPEED,Vel)
Vel[2]=0.0
vector_to_angle(Vel,angle)
entity_set_vector(entid,EV_VEC_angles,angle)
entity_set_vector(entid,EV_VEC_velocity,Vel)
entity_set_int(entid,EV_INT_sequence,4)
}
}