For shallow copy, you can use MemberwiseClone() method available in C# ICloneable interface. So, your point class should be changed to this.
public class point : GameData, ICloneable
{
public int TouchGround;
public object Clone()
{
return this.MemberwiseClone();
}
}
For shallow copy, you can use this.
point a = new point();
a.TouchGround = 1;
// Next lines, create a shallow copy of a and put into b.
point b = (point)a.Clone();
b.TouchGround = 20;
Console.WriteLine(a.TouchGround);
Console.WriteLine(b.TouchGround);
Console.ReadLine();
For deep copy, you would need to serialize this class and then de-serialize as another object of same type. You can do this using Newtonsoft.JSON. Your class should be serializable. Check this for similar details. You can also use DataContractSerializer.
point x = new point();
x.TouchGround = 35;
point y = JsonConvert.DeserializeObject<point>(JsonConvert.SerializeObject(x));
y.TouchGround = 40;
Console.WriteLine(x.TouchGround);
Console.WriteLine(y.TouchGround);
Console.ReadLine();