From what I understand you have 3 networks, and you want VM's to be able to communicate with each other even if they are in different network (and also in different subnets).
Make sure your networks' address ranges don't overlap (fe. 10.0.0.0/24, 10.0.1.0/24 etc.). If they do you can't make peering connection between them.
Go to the VPC Network and check IP ranges.
Then go to VPC network peering and make a connection (you have to have at least two for each connection; one from VPC1 to VPC2 and second from VPC2 to VPC1 in order to connection to be active (if it's not it means you just have one-sided connection).
If you want three networks to communicate you have to have connections 1>2,1>3,2>1,2>3,3>1,3>2.
When you have a connection active (between networks you want) then check firewall rules if they don't block the traffic - add proper rules if necessary.
If you've done all of this then ping any machine from VPC2 from any in VPC1 or VPC3 and it should work.
There's one if. Do you have two interfaces in the VM in question ? If so check if the IP routes are configured properly for the second interface (let's call it ETH1) - if they're not then you won't be able to talk to the network assigned to ETH1. Check the documentation for configuring proper routing.