交趾氣侯熱且潮濕,弓弩的製作、保養和使用都大受限製,加之價格昂貴,弓箭手訓練不易,故其軍隊裝備率並不高。饒是如此,陳晃在進攻之前仍然下令齊射了幾輪弓弩。漫天的箭雨之後,播州陣列巍然不動。播州士兵極其堅韌,加上軍紀嚴格約束,中箭之後隻是悶哼一聲倒在地上,旋即被拖到後方。實際上,交趾軍雖然射出了數千枝箭,但造成的傷害卻是寥寥。除了播州士兵普遍裝備了甲胄,又配備了大盾外,也因為交趾的弓弩製作水平實在低劣,甚至有不少竹弓,射出的箭矢軟綿無力。那些倒下的士兵多是被強弩所傷。
交趾軍弓箭手逼近之時,楊邦憲並沒有下令攻擊,而是坐視箭雨齊發。實際上此時播州軍的野戰火炮已經部署到位,而火槍兵也早已做好了射擊準備。輕型火炮的射程是兩裡,而火槍的射程是三百米,都遠遠超過了弓箭的射程。所謂一寸長一寸強,雖然雙方都是輕步兵,但僅遠程武器的射程來說,播州便占據了明顯優勢,論起威力來更是吊打交趾軍。
隱而不發,將敵人誘到近處來打,能大大提高火器的殺傷效果。這種戰術在善闡之戰中,使得驕橫的蒙古騎兵死傷慘重。賽赤典在敗逃到善闡城之後,曾痛罵楊憲狡猾、腹黑。此戰采用該戰術,是因為楊邦憲要的不是擊潰戰,而是要痛擊交趾軍,將其打殘打怕打出心理陰影。之所要這樣做,是因為在戰前他得到了消息,自己派到升龍的使者已被陳煚殺死並將懸首城門。這個使者論起關係來還是楊邦憲的遠房族叔,其身經百戰,沒有死抗蒙戰場上,而是被交趾人殺死,這著實讓播州師的憤怒出離天際。
當黑壓壓的交趾士兵衝到五十米處時,播州士兵開火了。新型火槍極高的射速,在短時間內傾瀉了大量的彈雨。圓錐形的包銅彈頭過處,交趾士兵如鐮刀下的麥子一般成片倒下。鐵製甲胄也擋不住火槍的抵近射擊,更何況交趾士兵那可憐的木盾和身上的布衣。在新型無煙火藥強大的動能之下,近距離射擊的火槍子彈甚至能在貫穿前方的人體之後,將後方的交趾士兵擊倒。
雖然前排死傷慘重,但交趾士兵人數實在太多,衝鋒隊列實在太密集,密集炸響的槍聲也被高昂的喊殺聲掩蓋。前麵的交趾士兵見狀不妙想要逃跑,卻在巨大的慣性下推著向前。後麵的交趾士兵不知前麵發生了何事,他們被軍功獎賞刺激得兩眼通紅,仍然急吼吼地往前衝鋒。當衝到二十米處時,他們又享受了第二頓火器大餐——手雷,一時間死傷狼籍。少數運氣爆棚的交趾士兵倒是衝到了陣前,迎接他們的卻是明晃晃刺刀攢刺。
交趾士兵終於醒悟過來之後,紛紛拔腳便逃。他們身形瘦小,又無甲胄拖累,逃跑的速度極快。隻不過速度再快,也不如子彈快。他們在逃離三百米的火槍射程過程中,又倒了一大片。就在手足伶俐者額首相慶時,空中又中響起尖嘯——播州軍的火炮開火了,隨即又是一大片士兵仆倒在地。