In 1965, Chris Taylor (Charlie Sheen) has dropped out of college, enlisted in the U.S. Army, and volunteered for combat duty in Vietnam. Assigned to Bravo Company in the 25th Infantry Division, near the Cambodian border, he is quickly disillusioned by the difficult environment, and his enthusiasm for the war declines. One night, his unit is set upon by a group of North Vietnamese Army (NVA) soldiers, who retreat after a brief confrontation. New recruit Gardner is killed while another soldier, Tex, is maimed by friendly fire. Taylor is scorned by the cruel Staff Sergeant Barnes (Tom Berenger) for falling asleep during watch, after being implicated by one of the veterans. Taylor eventually gains acceptance from a tight-knit group in his unit whose members socialize in a bunker clubhouse at their base. He finds mentors in King (Keith David) and the loyal Sergeant Elias (Willem Dafoe), and becomes close friends with other soldiers, including Lerner (Johnny Depp), Rhah (Francesco Quinn), Crawford (Chris Pedersen) and Manny (Corkey Ford).
During a patrol, Manny is found mutilated and tied to a post, while two other soldiers, Sal (Richard Edson) and Sandy (J. Adam Glover), are killed by a booby trap in a bunker. As tension mounts, the platoon reaches a nearby village where they discover a supply and weapons cache. Using Lerner as a translator, Barnes interrogates the village chief to determine if his people have been aiding the NVA. Despite the villagers' adamant denials, Barnes coldly shoots and kills the chief's wife. He holds the chief's daughter at gunpoint, threatening to kill her as well, if the villagers do not reveal what they know. Elias arrives and is furious with Barnes' behavior. A physical altercation between the duo ensues, which is ended by the timid platoon commander, Lieutenant Wolfe (Mark Moses), who orders the men to secure the villagers, destroy the enemy supplies, and burn the village down. As they leave, Taylor stops a group of soldiers from gang raping two girls.
When the unit returns to base, Captain Harris (Dale Dye) advises that if he finds out that an illegal killing took place, a court-martial will be ordered. Barnes worries that Elias will testify against him. On their next patrol, the platoon is ambushed and pinned down in a firefight, in which numerous soldiers are wounded, including Lerner and Big Harold (Forest Whitaker). Lerner is taken back to the helicopter landing area, while Lieutenant Wolfe calls in a artillery strike and the incorrect coordinates he provides results in a number of friendly fire casualties. Elias takes Taylor, Crawford, and Rhah to intercept flanking enemy troops. Barnes orders the rest of the platoon to retreat and goes back into the jungle to find Elias' group. Barnes finds Elias alone and shoots him, then returns and tells the others that Elias was killed by the enemy. While the platoon is extracting via helicopter, they glimpse Elias, mortally wounded, emerging from the treeline and being chased by a group of North Vietnamese soldiers, who kill him. Noting Barnes' anxious manner, Taylor realizes that he gave a false account of Elias' wounding.
At the base, Taylor becomes convinced that Barnes is responsible for Elias' death. He attempts to talk his group into fragging the sergeant in retaliation when Barnes, having overheard them, enters the room and mocks them. Taylor assaults the intoxicated Barnes but is quickly overpowered. Barnes cuts Taylor near his eye with a push dagger before departing.
The platoon is sent back to the combat area to maintain defensive positions, where Taylor shares a foxhole with Francis. That night, a major NVA assault occurs, and the defensive lines are broken. Much of the platoon, including Bunny, Junior, and Wolfe, are killed in the ensuing battle. During the attack, an NVA sapper, armed with explosives, rushes into battalion headquarters, making a suicide attack and killing everyone inside. Meanwhile, Captain Harris, the company commander, orders his air support to expend all remaining ordnance inside his perimeter. During the chaos, Taylor encounters Barnes, who is wounded and driven to insanity. Just as Barnes is about to kill Taylor, both men are knocked unconscious by an air strike.
Taylor regains consciousness the following morning, picks up an enemy Type 56 rifle, and finds Barnes, who orders Taylor to call a medic. Seeing that Taylor won't help, Barnes tells him to pull the trigger. Taylor shoots and kills Barnes. He sits and waits until reinforcements arrive and find him. Francis, who survived the battle unharmed, deliberately stabs himself in the leg and reminds Taylor that because they have been twice wounded, they can return home. The helicopter carries the two men away. Overwhelmed, Taylor sobs as he glares down at multiple craters full of corpses, both friend and foe.

Question: Why does Barnes attack Taylor with a dagger?
Answer: Because he overhears Taylor telling the others that Barnes was responsible for Elias' death.
Alternative answer: Barnes believes Taylor is responsible for Elias death