我只能讓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)
}
}