Articles of 触摸

沿滑动移动一个球体?

我正在尝试基于滑动来获取球体curl。 我知道这已经被问了很多次了,但仍然渴望得到回答。 我已经成功地增加了轻扫方向的力量,并且接近完美。 我也有所有的滑动位置存储在一个列表中。 现在我想知道如何实现curl。 我相信滑动的曲线可以通过Vector点积来计算 如果theta是0,那么不需要添加滑动。 如果不是,则添加curl。 也许这个条件是多余的,如果我设法find如何沿滑动位置curl球体 基于滑动方向向球体添加力的代码如下: using UnityEngine; using System.Collections; using System.Collections.Generic; public class SwipeControl : MonoBehaviour { //First establish some variables private Vector3 fp; //First finger position private Vector3 lp; //Last finger position private Vector3 ip; //some intermediate finger position private float dragDistance; //Distance needed for a swipe to register […]

根据移动的物理像素计算速度/时间

在我的游戏中,我整合如下:(请假设所有variables被声明) sprite.xTimeInSeconds = 5.0; //Time in seconds it should take this object to cross screen sprite.xVelocity = 1f/xTimeInSeconds; 然后我像这样移动它: sprite.gridX+=sprite.xVelocity*dt; sprite.x=sprite.gridX*screenWidth; 然后我只是在这些坐标上呈现精灵: sprite.draw(); //Uses sprite's internal 'x' which was set above 所以,游戏中的所有东西都能正常工作 – 也就是说。 所有的移动都可以正确地缩放,不管是什么设备,但是现在我正在尝试为自己的菜单编写自己的滑动触摸控制系统。 菜单确实起作用 – 用户可以将手指放在屏幕上,上下移动,当他们松开手指时,菜单保持滚动(*见下文)。 如果他们再次按下手指,滚动将立即停止,正如人们所期望的那样。 我唯一遇到的问题是如何在用户释放手指时“减速”滚动。 目前,它保持相同的速度滚动,直到达到限制或用户点击屏幕停止。 在我的触摸滚动方法中,我只是确定用户手指移动了多less,然后移动相同数量的对象。 我需要知道(而且不能弄清楚),我怎么能 – 只知道移动像素的数量,找出上面的“时间”variables? (一旦我有了这个,我可以在所有设备上按比例减速)。

在混合手机游戏中注册复杂的触摸手势

我正在寻找一种方法来在移动设备的屏幕上注册复杂的形状手势。 该应用程序是使用Javascript构建的,目标是作为一个混合或Web应用程序。 然而,环顾四周,我无法find任何有关我正在寻找的东西。 我希望能够注册,如果用户“画”一个圆形或矩形或更复杂的东西在他的手机屏幕上。 这甚至可以通过Javascript吗? 我很确定这是可能的本地开发,虽然我再也没有find任何相关的来源… 我想到的一个解决scheme是每当用户的手指改变方向(即拖动线的角度改变)时注册一个事件,然后内插所有的方向改变为形状的点。 这似乎太复杂,但这是一个解决scheme? 是否有可能注册每个方向的变化?

使用Event Trigger Unity改变bool的问题,但bool保持设置为false

好吧,我已经多次使用Unity事件触发器来检查Android游戏的屏幕button。 我做了很多次的一个例子是左右箭头button,它移动了角色。 有我正在使用(或试图至less!)的OnPointerDown()和OnPointerUp()方法。 所以我有一个叫做isLeftToggled的布尔,它的初始化为'false'。 OnPointerDown / Up链接到一个名为ToggleButtonLeft()的方法: public void ToggleButtonLeft(){ Debug.Log ("LEFT TOGGLED" + isLeftToggled); if (isLeftToggled) { isLeftToggled = false; } else { isLeftToggled = true; } } 上面的Debug.Log读出来确定,它切换真和假(虽然令人费解的第一个日志我得到是'真')。 然而,在我的更新方法中,我经常告诉我它是真是假,每一次调用都是错误的。 我validation了这一点,因为当我尝试使用bool来转换它时,ship(游戏角色)不会转向。 如果我把布尔初始化为“真”,并通过注释去掉切换,那么船就会变好。 我有button游戏对象的事件触发器,我不记得如果我不得不添加其他东西,使其工作。 但是我相当确定button正在工作,因为它总是打印两个button调用的方法内的Debug.Log。 任何想法为什么布尔是每个框架“假”。 上面的代码不应该在手指按在button上时将其切换为真? 这是整个class级(我想考虑修剪不相关的部分,但是不想错过重要的东西,所以决定发布整件事情): public class Player : MonoBehaviour { float rotationSpeed = 360f; float currentThrust = 0f; float thrustDecay = […]

LibGDX:实现触摸屏,无需触摸屏幕

我正在使用LibGDX。 比方说,我不想跳 – 但不是真的触摸屏幕,我不想用键盘,并实施触摸,就像我在触摸屏幕。 我可以这样做吗? 可以让我们说“testing”button,而不必按(从应用程序/ android / ios /等..触摸屏)? InputListener中的button示例: final Image imageJumpButton = new Image(new Texture("jbjump.png")); imageJumpButton.addListener(new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { JOYSTICK_UP= true; return true; } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { JOYSTICK_UP […]

触摸控制逻辑去哪里?

我正在创建一个游戏(或应用程序,这取决于你将如何定义它…)在屏幕上移动对象(与精灵)。 在这两种情况下,我已经把这个工作做了一半,但是我似乎无法完全使用一个工作。 我的问题是,我不知道应该在哪里处理对象。 我有一个单独的图层,其中包含该图层上的所有对象。 我把所有的触摸逻辑在这一层,它工作正常,但我只能移动一个对象(我必须声明一个currentObjectvariables来跟踪什么是移动),我不知道如何看看是否在没有currentObjectvariables的层上处理触摸。 这是我的触摸开始方法: -(BOOL)ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event{ BOOL isTouchHandled = CGRectContainsBorder([current.sprite boundingBox], lastTouchLocation); return isTouchHandled; } 我也试图让对象本身的所有触摸控制,让我分开移动所有的对象,但我不能让对象对任何层variables或事件作出反应(我不知道如何得到查看图层中variables的当前状态的对象)。 该触摸的代码开始是: -(BOOL)ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event{ BOOL isTouchHandled = CGRectContainsBorder([sprite boundingBox], lastTouchLocation); return isTouchHandled; } 它们之间的唯一区别是图层正在访问对象的实例variables,并且该对象访问自己的variables。 注意:这些function并没有在同一时间执行,我正在尝试一个,看看它是否工作,然后尝试另一个,看看它是否工作… 那么,我怎么解决这个问题? 有没有办法可以独立移动所有对象? 我有一些事物,一旦移动到某一点,移动物体就会发生反应,但是我希望在发生所有事件之后,物体也能够移动,我可以让它们对事件作出反应,并移动当前到下一个对象(控制触摸是在图层上),或者我可以独立移动所有的对象,但我不能访问图层的事件(控制与对象)…

如何在Andengine中实施轻扫操作?

我有一个球精灵,当用户在上面滑动时,我会应用物理。 我希望球开始向滑动的方向移动,类似于纸张折叠的工作方式。 我怎样才能做到这一点?

同时触摸不被检测到

我对发动机的比赛例子有几乎相同的控制。 一个AnalogOnScreenControl和一个由Sprite定义的button。 问题是,当我使用模拟方向时,触摸button不会在button精灵上触发onAreaTouched 。 我甚至尝试将button添加到子场景(控制器场景),但不会在button上注册二次触摸。 我做错了什么或者这是一个错误? UPDATE 我正在做一些debugging,显然如果我触摸控制基座,触发它的onAreaTouched ,如果我继续触摸控件,然后触摸button(在屏幕的另一侧)从控制基地相同onAreaTouched触发。 他是唯一一个接触触摸事件的人。 我真的不明白为什么会这样。

我的运动在键盘上运行良好,但在android上却不行

所以基本上这里是我的运动是关键的: 关键 if (keycode == Keys.LEFT) { mishi.getAcceleration().x = -13; } 关键了 if (keycode == Keys.LEFT) { mishi.getAcceleration().x = 0; mishi.getVelocity().x = 0; mishi.setRotation(0); } 碰一下 if (x >= 0 && x < 1 && y > 5 && y < 8) { mishi.getAcceleration().x = -13; } 润色 if (x >= 0 && x < […]

在“触动事件”的同时实施行动

我正在使用iOS的Xcode制作游戏。 这是我有一段代码,当屏幕被点击时,精灵会跳起来: //tap/touch to jump (& play sound) -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event{ [self playSound]; jumpUp = 16; } 实现这一点非常简单,但是我怎样才能实现这个function,让精灵继续上升,而不是仅仅点击一下? //Simple pseudo code: while touchingScreen Event { jumpUp +=1; }