首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Corona轨道对象改变方向

Corona轨道对象改变方向
EN

Stack Overflow用户
提问于 2013-05-04 00:06:17
回答 2查看 441关注 0票数 0

我有以下代码:

代码语言:javascript
复制
deg = 0.0;
local function onTouch(event)
   if(event.yStart >= event.y) then
      deg = deg + 10;
   elseif(event.yStart <= event.y) then
      deg = deg -10;
   end  

   rads = deg * (math.pi /180.0);
   x = 100.0 * math.cos(rads);
   y = 100.0 * math.sin(rads);
   rect.x = magnet.x + x;
   rect.y = magnet.y + y;
end

它在某种程度上起作用,但并不完美。我要做的是,当用户拖起对象时,会顺时针旋转。当用户向下拖曳时,物体逆时针旋转(我指的是旋转另一个物体)。

我遇到的问题是,当用户向上或向下拖拽时,deg一直在向上/向下递增。因此,当改变方向时,它必须一直增加到0,才能有效地改变方向。我想不出如何在不扭曲物体位置的情况下对变量进行情感复位。

提前感谢。

编辑

在查看了代码之后,我意识到问题是,而不是,正如我前面所说的。问题是,当我改变方向时,event.yStart不会重置!

那么,假设我启动了200 or,当我拖起意志增量时,只要我保持在200 or以上(无论是向上还是向下),会发生什么。直到我降到200便士以下,才会开始减少。

EN

回答 2

Stack Overflow用户

发布于 2013-05-04 06:33:59

你可以试试这个:

代码语言:javascript
复制
deg = 0.0;
local prevPosY = 0
local function onTouch(event)
   if event.phase == "began" then
      prevPosY = event.y
   end
   if(event.y >= prevPosY) then
      deg = deg + 10;
   elseif(event.y <= prevPosY) then
      deg = deg -10;
   end  
   prevPosY = event.y

   rads = deg * (math.pi /180.0);
   x = 100.0 * math.cos(rads);
   y = 100.0 * math.sin(rads);
   rect.x = magnet.x + x;
   rect.y = magnet.y + y;
end
票数 0
EN

Stack Overflow用户

发布于 2013-05-04 12:16:46

代码语言:javascript
复制
deg = 0.0;
prevY = 0;
local function onTouch(event)
  if event.phase == "began" then
      prevY = event.y
   end
   if(event.y >= prevY) then
      deg = deg + 10;
   elseif(event.y <= prevY) then
      deg = deg -10;
   end  
   prevY = event.y

   rads = deg * (math.pi /180.0);
   x = 100.0 * math.cos(rads);
   y = 100.0 * math.sin(rads);
   rect.x = magnet.x + x;
   rect.y = magnet.y + y;
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16369256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档