The code you show goes trough every vertex then manipulate it. To manipulate a single vertex, you just have to "skip" the for loop ; something like that :
import bge
cont = bge.logic.getCurrentController()
own = cont.owner
mesh = own.meshes[0]
# verts = mesh.getVertexArrayLength(0) #we don't need that anymore
i = 0 #the index of the vertex we want to manipulate. 0 is the first one
point = mesh.getVertex(0, i)
uv = point.getUV()
uv[0] += own['x']/100
uv[1] += own['y']/100
point.setUV(uv)
i = 1 #the index of the vertex we want to manipulate. 1 is the second one
point = mesh.getVertex(0, i)
uv = point.getUV()
uv[0] += own['x']/100
uv[1] += own['y']/100
point.setUV(uv)
# ...and repeat with i=2, i=3 etc
This code should work (i can't test it right now), but is not very robust. What appends if you try to manipulate a vertex that doesn't exist ?
As the code repeats a lot, you can wrap some of it in a function, like that :
import bge
cont = bge.logic.getCurrentController()
own = cont.owner
mesh = own.meshes[0]
move_uv(0, 0.5, 0.0) #move the first vertex 0.5 right
move_uv(1, 0.0, -0.5) #move the second vertex 0.5 down
move_uv(2, 0.1, -0.1) #... and so on
def move_uv(index, moveX, moveY):
point = mesh.getVertex(0, index)
uv = point.getUV()
uv[0] += moveX
uv[1] += moveY
point.setUV(uv)