交趾气侯热且潮湿,弓弩的制作、保养和使用都大受限制,加之价格昂贵,弓箭手训练不易,故其军队装备率并不高。饶是如此,陈晃在进攻之前仍然下令齐射了几轮弓弩。漫天的箭雨之后,播州阵列巍然不动。播州士兵极其坚韧,加上军纪严格约束,中箭之后只是闷哼一声倒在地上,旋即被拖到后方。实际上,交趾军虽然射出了数千枝箭,但造成的伤害却是寥寥。除了播州士兵普遍装备了甲胄,又配备了大盾外,也因为交趾的弓弩制作水平实在低劣,甚至有不少竹弓,射出的箭矢软绵无力。那些倒下的士兵多是被强弩所伤。
交趾军弓箭手逼近之时,杨邦宪并没有下令攻击,而是坐视箭雨齐发。实际上此时播州军的野战火炮已经部署到位,而火枪兵也早已做好了射击准备。轻型火炮的射程是两里,而火枪的射程是三百米,都远远超过了弓箭的射程。所谓一寸长一寸强,虽然双方都是轻步兵,但仅远程武器的射程来说,播州便占据了明显优势,论起威力来更是吊打交趾军。
隐而不发,将敌人诱到近处来打,能大大提高火器的杀伤效果。这种战术在善阐之战中,使得骄横的蒙古骑兵死伤惨重。赛赤典在败逃到善阐城之后,曾痛骂杨宪狡猾、腹黑。此战采用该战术,是因为杨邦宪要的不是击溃战,而是要痛击交趾军,将其打残打怕打出心理阴影。之所要这样做,是因为在战前他得到了消息,自己派到升龙的使者已被陈煚杀死并将悬首城门。这个使者论起关系来还是杨邦宪的远房族叔,其身经百战,没有死抗蒙战场上,而是被交趾人杀死,这着实让播州师的愤怒出离天际。
当黑压压的交趾士兵冲到五十米处时,播州士兵开火了。新型火枪极高的射速,在短时间内倾泻了大量的弹雨。圆锥形的包铜弹头过处,交趾士兵如镰刀下的麦子一般成片倒下。铁制甲胄也挡不住火枪的抵近射击,更何况交趾士兵那可怜的木盾和身上的布衣。在新型无烟火药强大的动能之下,近距离射击的火枪子弹甚至能在贯穿前方的人体之后,将后方的交趾士兵击倒。
虽然前排死伤惨重,但交趾士兵人数实在太多,冲锋队列实在太密集,密集炸响的枪声也被高昂的喊杀声掩盖。前面的交趾士兵见状不妙想要逃跑,却在巨大的惯性下推着向前。后面的交趾士兵不知前面发生了何事,他们被军功奖赏刺激得两眼通红,仍然急吼吼地往前冲锋。当冲到二十米处时,他们又享受了第二顿火器大餐——手雷,一时间死伤狼籍。少数运气爆棚的交趾士兵倒是冲到了阵前,迎接他们的却是明晃晃刺刀攒刺。
交趾士兵终于醒悟过来之后,纷纷拔脚便逃。他们身形瘦小,又无甲胄拖累,逃跑的速度极快。只不过速度再快,也不如子弹快。他们在逃离三百米的火枪射程过程中,又倒了一大片。就在手足伶俐者额首相庆时,空中又中响起尖啸——播州军的火炮开火了,随即又是一大片士兵仆倒在地。