Zac Efron was pissed off with his character in 'The Lucky One' because he is so perfect.

The 24-year-old plays war hero Logan Thibault - who along with being romantic, good with kids, and a former marine can also dance and play the piano - and Zac admitted he was annoyed that he can't measure up in real life.

He told 'Extra': "I was pissed at myself when was playing him, my character is the coolest dude and on top of that he's a hero. But it was the best part in the world to play."

Zac and co-star Taylor Schilling have some steamy love scenes in the movie and he says they got through them by maintaining an "undercurrent of laughter".

Zac said: We maintained an "undercurrent of laughter" and had a good laugh."

Taylor added: "I didn't find it weird to film, Zac's a really easy guy to work with and we had a lot of fun, it was a comfortable, safe situation."

Zac shows off an impressive physique in the film thanks to a strict training regime which saw him put on 17 pounds.

He explained: "I did a lot of training, it was a we very strict training regiment with a Navy seal, trained for five months, I put on about 17 pounds but I don't know if I could do it again."