Hello, I have a problem with rotating go, when I test it in the editor, everything looks good, but when I run the application on the phone, it twitches and does not rotate smoothly.
function init(self)
msg.post(".", "acquire_input_focus")
self.start_x = 0
self.position_x = 0
self.speed = 15
self.rotation = 0
end
function update(self, dt)
local distance = (self.start_x - self.position_x)
if distance ~= 0 then
local add = distance * self.speed * dt
self.rotation = self.rotation + add
local quat = vmath.quat_rotation_z(math.rad(self.rotation))
go.set_rotation(quat)
self.start_x = self.position_x
end
end
function on_input(self, action_id, action)
if action_id == hash("touch") then
if action.pressed then
self.start_x = action.x
self.position_x = action.x
self.is_down = true
elseif action.released then
self.is_down = false
elseif self.is_down then
self.position_x = action.x
end
end
end
britzl
April 22, 2018, 7:47pm
4
Could you please print this value every frame and share the values with us. It seems weird that the angle is determined by the distance multiplied by 15. The value is likely to change quite a bit between every frame isn’t it?
It will be hard to analyze, because I rotate in both directions (right and left), and sometimes it freezes and there is a feeling that there is inertia.
DEBUG:SCRIPT: rotation:
199.11704177975
DEBUG:SCRIPT: rotation:
196.34256651112
DEBUG:SCRIPT: rotation:
194.77680879842
DEBUG:SCRIPT: rotation:
193.2347292651
DEBUG:SCRIPT: rotation:
193.62597545488
DEBUG:SCRIPT: rotation:
194.01700391962
DEBUG:SCRIPT: rotation:
196.36975384846
DEBUG:SCRIPT: rotation:
197.53437889803
DEBUG:SCRIPT: rotation:
201.8495794529
DEBUG:SCRIPT: rotation:
206.18197930689
DEBUG:SCRIPT: rotation:
209.30064993409
DEBUG:SCRIPT: rotation:
212.82264986039
DEBUG:SCRIPT: rotation:
215.54083358763
DEBUG:SCRIPT: rotation:
217.1151745663
DEBUG:SCRIPT: rotation:
216.72539611609
DEBUG:SCRIPT: rotation:
216.32531668959
DEBUG:SCRIPT: rotation:
215.19844163643
DEBUG:SCRIPT: rotation:
212.4297997374
DEBUG:SCRIPT: rotation:
208.95036206767
DEBUG:SCRIPT: rotation:
206.5468503076
DEBUG:SCRIPT: rotation:
203.02203790353
DEBUG:SCRIPT: rotation:
200.34060426904
DEBUG:SCRIPT: rotation:
196.05678794802
DEBUG:SCRIPT: rotation:
193.70166291379
DEBUG:SCRIPT: rotation:
190.99864594755
DEBUG:SCRIPT: rotation:
190.21322542187
DEBUG:SCRIPT: rotation:
189.03461189213
DEBUG:SCRIPT: rotation:
188.64331260125
DEBUG:SCRIPT: rotation:
187.86786180531
DEBUG:SCRIPT: rotation:
187.47737499283
DEBUG:SCRIPT: rotation:
187.08761738137
DEBUG:SCRIPT: rotation:
185.92030488409
DEBUG:SCRIPT: rotation:
185.14289584634
DEBUG:SCRIPT: rotation:
184.75305487988
DEBUG:SCRIPT: rotation:
184.36232013678
DEBUG:SCRIPT: rotation:
184.74682593336
DEBUG:SCRIPT: rotation:
185.5296329026
DEBUG:SCRIPT: rotation:
187.09095092533
DEBUG:SCRIPT: rotation:
189.44145101165
DEBUG:SCRIPT: rotation:
191.82308752745
DEBUG:SCRIPT: rotation:
194.14208749033
DEBUG:SCRIPT: rotation:
196.09260073797
DEBUG:SCRIPT: rotation:
197.27328819157
DEBUG:SCRIPT: rotation:
198.07787542941
DEBUG:SCRIPT: rotation:
199.28512548341
DEBUG:SCRIPT: rotation:
200.03950417761
DEBUG:SCRIPT: rotation:
200.43097950931
DEBUG:SCRIPT: rotation:
200.81926738182
DEBUG:SCRIPT: rotation:
201.21012917537
DEBUG:SCRIPT: rotation:
201.5975628782
DEBUG:SCRIPT: rotation:
200.81476737563
DEBUG:SCRIPT: rotation:
198.07339630977
DEBUG:SCRIPT: rotation:
194.92922572892
DEBUG:SCRIPT: rotation:
192.19150028139
DEBUG:SCRIPT: rotation:
188.71450034849
DEBUG:SCRIPT: rotation:
185.58834121981
DEBUG:SCRIPT: rotation:
184.01233347603
DEBUG:SCRIPT: rotation:
182.84989598677
DEBUG:SCRIPT: rotation:
181.67664595884
DEBUG:SCRIPT: rotation:
180.50570840486
DEBUG:SCRIPT: rotation:
179.32945835408
DEBUG:SCRIPT: rotation:
178.55388260691
DEBUG:SCRIPT: rotation:
178.16197910871
DEBUG:SCRIPT: rotation:
177.77122147011
DEBUG:SCRIPT: rotation:
176.98764581775
DEBUG:SCRIPT: rotation:
176.5976798576
DEBUG:SCRIPT: rotation:
174.62404176674
DEBUG:SCRIPT: rotation:
174.24190931376
DEBUG:SCRIPT: rotation:
177.41492467571
DEBUG:SCRIPT: rotation:
180.91742480278
DEBUG:SCRIPT: rotation:
185.75667468935
DEBUG:SCRIPT: rotation:
191.03875053619
DEBUG:SCRIPT: rotation:
196.9485044309
DEBUG:SCRIPT: rotation:
199.47900088296
DEBUG:SCRIPT: rotation:
201.89112588556
DEBUG:SCRIPT: rotation:
203.81290038397
DEBUG:SCRIPT: rotation:
204.97321282794
DEBUG:SCRIPT: rotation:
205.36575067191
DEBUG:SCRIPT: rotation:
206.07221243046
DEBUG:SCRIPT: rotation:
206.45302119605
DEBUG:SCRIPT: rotation:
206.82743420512
DEBUG:SCRIPT: rotation:
207.22119188636
DEBUG:SCRIPT: rotation:
207.6043548184
DEBUG:SCRIPT: rotation:
208.00092507114
DEBUG:SCRIPT: rotation:
208.38867126845
DEBUG:SCRIPT: rotation:
207.22104631245
DEBUG:SCRIPT: rotation:
205.59245506325
DEBUG:SCRIPT: rotation:
204.79067122345
DEBUG:SCRIPT: rotation:
204.39795520804
DEBUG:SCRIPT: rotation:
204.0051048696
DEBUG:SCRIPT: rotation:
203.59925467554
DEBUG:SCRIPT: rotation:
203.23895595454
DEBUG:SCRIPT: rotation:
202.84033484854
DEBUG:SCRIPT: rotation:
200.5173348552
DEBUG:SCRIPT: rotation:
199.40695981126
DEBUG:SCRIPT: rotation:
198.45614733271
DEBUG:SCRIPT: rotation:
197.36690002162
DEBUG:SCRIPT: rotation:
196.1980249979
DEBUG:SCRIPT: rotation:
194.39906308312
DEBUG:SCRIPT: rotation:
192.42155929714
DEBUG:SCRIPT: rotation:
190.02118432581
DEBUG:SCRIPT: rotation:
188.07951382796
DEBUG:SCRIPT: rotation:
186.86838877356
DEBUG:SCRIPT: rotation:
186.14222921811
DEBUG:SCRIPT: rotation:
185.35527856331
DEBUG:SCRIPT: rotation:
184.53801260667
DEBUG:SCRIPT: rotation:
183.65502125821
DEBUG:SCRIPT: rotation:
183.29234750185
DEBUG:SCRIPT: rotation:
181.72661272495
DEBUG:SCRIPT: rotation:
181.34995954371
DEBUG:SCRIPT: rotation:
180.17997098571
DEBUG:SCRIPT: rotation:
179.3765334943
DEBUG:SCRIPT: rotation:
178.11053351682
DEBUG:SCRIPT: rotation:
177.02215852399
DEBUG:SCRIPT: rotation:
175.64098519025
DEBUG:SCRIPT: rotation:
173.35973522378
DEBUG:SCRIPT: rotation:
170.2195761779
DEBUG:SCRIPT: rotation:
167.84182629153
DEBUG:SCRIPT: rotation:
165.83899814942
DEBUG:SCRIPT: rotation:
165.07125567992
DEBUG:SCRIPT: rotation:
163.88700568465
DEBUG:SCRIPT: rotation:
163.49703972449
DEBUG:SCRIPT: rotation:
165.13888111988
DEBUG:SCRIPT: rotation:
166.77647240395
DEBUG:SCRIPT: rotation:
168.90659735473
DEBUG:SCRIPT: rotation:
170.08153482275
DEBUG:SCRIPT: rotation:
170.47806100187
DEBUG:SCRIPT: rotation:
172.38515930087
DEBUG:SCRIPT: rotation:
173.55928430636
DEBUG:SCRIPT: rotation:
173.9536022507
DEBUG:SCRIPT: rotation:
175.12416471451
DEBUG:SCRIPT: rotation:
175.53373520373
DEBUG:SCRIPT: rotation:
175.16110293102
DEBUG:SCRIPT: rotation:
175.9722854474
DEBUG:SCRIPT: rotation:
176.72973635968
DEBUG:SCRIPT: rotation:
176.3339161467
DEBUG:SCRIPT: rotation:
177.76916619057
DEBUG:SCRIPT: rotation:
178.07527634321
DEBUG:SCRIPT: rotation:
178.84893544724
DEBUG:SCRIPT: rotation:
179.24219311491
DEBUG:SCRIPT: rotation:
180.79978402007
DEBUG:SCRIPT: rotation:
181.98409653037
DEBUG:SCRIPT: rotation:
186.62134674146
DEBUG:SCRIPT: rotation:
190.55988472047
DEBUG:SCRIPT: rotation:
193.29206853478
DEBUG:SCRIPT: rotation:
197.01806861746
DEBUG:SCRIPT: rotation:
202.01927306221
DEBUG:SCRIPT: rotation:
205.38958568682
DEBUG:SCRIPT: rotation:
208.4830894638
DEBUG:SCRIPT: rotation:
212.19708945511
DEBUG:SCRIPT: rotation:
213.43733941113
DEBUG:SCRIPT: rotation:
213.85147249995
DEBUG:SCRIPT: rotation:
216.52823291097
DEBUG:SCRIPT: rotation:
218.14554545872
DEBUG:SCRIPT: rotation:
218.48615629565
DEBUG:SCRIPT: rotation:
220.10331902685
DEBUG:SCRIPT: rotation:
221.62714856277
DEBUG:SCRIPT: rotation:
222.41086072406
DEBUG:SCRIPT: rotation:
223.18807284292
DEBUG:SCRIPT: rotation:
223.58667311079
DEBUG:SCRIPT: rotation:
223.97723179719
DEBUG:SCRIPT: rotation:
223.57829819671
DEBUG:SCRIPT: rotation:
225.9127981612
DEBUG:SCRIPT: rotation:
226.31389842369
DEBUG:SCRIPT: rotation:
224.02514851652
DEBUG:SCRIPT: rotation:
221.24381907254
DEBUG:SCRIPT: rotation:
210.58219023036
DEBUG:SCRIPT: rotation:
205.63298563803
DEBUG:SCRIPT: rotation:
208.51596076657
DEBUG:SCRIPT: rotation:
204.9952733066
DEBUG:SCRIPT: rotation:
206.13952334654
DEBUG:SCRIPT: rotation:
205.7486730038
britzl
April 23, 2018, 7:34am
6
Ok, and if that’s the angle that you convert to radians it should be rotating between ~175 and 225 degrees. If we take this sequence of values:
DEBUG:SCRIPT: rotation:
163.49703972449
DEBUG:SCRIPT: rotation:
165.13888111988
DEBUG:SCRIPT: rotation:
166.77647240395
DEBUG:SCRIPT: rotation:
168.90659735473
DEBUG:SCRIPT: rotation:
170.08153482275
DEBUG:SCRIPT: rotation:
170.47806100187
DEBUG:SCRIPT: rotation:
172.38515930087
DEBUG:SCRIPT: rotation:
173.55928430636
DEBUG:SCRIPT: rotation:
173.9536022507
DEBUG:SCRIPT: rotation:
175.12416471451
DEBUG:SCRIPT: rotation:
175.53373520373
DEBUG:SCRIPT: rotation:
175.16110293102
DEBUG:SCRIPT: rotation:
175.9722854474
DEBUG:SCRIPT: rotation:
176.72973635968
DEBUG:SCRIPT: rotation:
176.3339161467
DEBUG:SCRIPT: rotation:
177.76916619057
DEBUG:SCRIPT: rotation:
178.07527634321
DEBUG:SCRIPT: rotation:
178.84893544724
DEBUG:SCRIPT: rotation:
179.24219311491
DEBUG:SCRIPT: rotation:
180.79978402007
DEBUG:SCRIPT: rotation:
181.98409653037
DEBUG:SCRIPT: rotation:
186.62134674146
DEBUG:SCRIPT: rotation:
190.55988472047
DEBUG:SCRIPT: rotation:
193.29206853478
DEBUG:SCRIPT: rotation:
197.01806861746
DEBUG:SCRIPT: rotation:
202.01927306221
DEBUG:SCRIPT: rotation:
205.38958568682
DEBUG:SCRIPT: rotation:
208.4830894638
DEBUG:SCRIPT: rotation:
212.19708945511
DEBUG:SCRIPT: rotation:
213.43733941113
DEBUG:SCRIPT: rotation:
213.85147249995
DEBUG:SCRIPT: rotation:
216.52823291097
DEBUG:SCRIPT: rotation:
218.14554545872
DEBUG:SCRIPT: rotation:
218.48615629565
DEBUG:SCRIPT: rotation:
220.10331902685
DEBUG:SCRIPT: rotation:
221.62714856277
DEBUG:SCRIPT: rotation:
222.41086072406
DEBUG:SCRIPT: rotation:
223.18807284292
DEBUG:SCRIPT: rotation:
223.58667311079
DEBUG:SCRIPT: rotation:
223.97723179719
DEBUG:SCRIPT: rotation:
223.57829819671
DEBUG:SCRIPT: rotation:
225.9127981612
DEBUG:SCRIPT: rotation:
226.31389842369
They happen in less than a second. Is that ok? How does it look on mobile?
Look at this, on 3, 11 and 16 it freezes noticeably, and during the whole game process sometimes are twitchings. Lags occur only with a circle.
1 Like
britzl
April 23, 2018, 1:13pm
8
It must be something wrong in your code. Print the values when you’re running on a phone and try to make sense of them. From your video it looks like you touch with your finger and swipe left/right to rotate the wheel, correct? This is how I’d implement it:
function init(self)
msg.post(".", "acquire_input_focus")
self.angle = 0
self.rotation_speed = 0
end
function update(self, dt)
self.angle = self.angle + self.rotation_speed * dt
go.set_rotation(vmath.quat_rotation_z(math.rad(self.angle)))
end
function on_input(self, action_id, action)
if action_id == hash("touch") then
if action.pressed then
self.pressed_pos_x = action.x
elseif action.released then
self.rotation_speed = 0
else
self.rotation_speed = self.pressed_pos_x - action.x
end
end
end
GIF:
7 Likes