# position_of_Area_Godot

a guest
Mar 6th, 2020
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. # SpaceCell.gd
2. extends Area
3.
4. var contacts = {}
5. var force = Vector3(0,0,0) # the force that acts on the cell
6. var velocity = Vector3(0,0,0) # the velocity of the cell
7.
8. const FORCE_K = 1 # the constant k in F=kx between the cells
9. const REST_DISTANCE = 1 # the distance between two cells at which the cells are at rest
10.
11. func update_force():
12. # updates the force that acts on a cell i from all other cells j
13. # var pos_i = get_pos() # <------- THE PROBLEM
14. # var pos_i = position # <------- THE PROBLEM
15. var pos_i = self.position # <------- THE PROBLEM
16. for cell_j in contacts:
17. var pos_j = cell_j.position # <------- THE PROBLEM
18. var x = pos_i - pos_j
19. var x0 = x.normalized()*REST_DISTANCE
20. var force_ij = FORCE_K*(x - x0)
21. force += force_ij
22.
23. func update_velocity(delta):
24. velocity += force * delta
25.
26. func update_position(delta):
27. self.position = self.position + velocity*delta
28.
29. func _physics_process(delta):
30. update_force()
31. update_velocity(delta)
32. update_position(delta)
33.
34. func area_entered(area):
35. contacts[area.cellname] = area
36.
37. func area_exited(area):
38. contacts.erase(area.cellname)
39.
40.
41. # ERROR OUTPUT:
42. # Invalid get index 'position' (on base: 'Area (SpaceCell.gd)').
43.
44. # SpaceCell SCENE SETUP:
45. # SpaceCell [Area] <----- Script attached called SpaceCell.gd, see above
46. # ---- CollisionShape (shaped like sphere)
47. # ---- ---- CSGMesh (shaped like sphere)