Articles of 操纵杆

Unity中的虚拟游戏杆

在Unity中创建虚拟游戏杆时遇到了问题。 问题是我的操纵杆的正确function似乎取决于它的大小,因为当我将它从500由500改为200时,它似乎不起作用。 我怎样才能摆脱这种大小的依赖? 这是我的游戏杆实施: using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine; using System; public class VirtualJoystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler { private Image backgroundImage, joystickImage; private Vector3 inputVector; private float notActiveAlphaValue, activeAlphaValue; private void Start() { initializeJoystickPartsAndVariables(); changeAlphaValueOfTheJoystick(notActiveAlphaValue); } private void initializeJoystickPartsAndVariables() { backgroundImage = GetComponent<Image>(); joystickImage = transform.GetChild(0).GetComponent<Image>(); notActiveAlphaValue = 0.3f; activeAlphaValue = 1f; […]

双触控游戏杆

我正在开发一个手机游戏,我需要使用触摸模拟游戏杆( http://img.ufgame.com/android/Ipoc_dpad.png )在任何方向上控制主角。 没关系,但我也希望我的角色能够朝任何方向射击。 因此我正在寻找控制的最佳解决scheme。 有一些变体,但没有人可以: 通过将手指指向屏幕的精确点来瞄准和射击(不舒服,因为玩家将需要一只手握住装置并使用秒针移动整个装置)。 射击角色移动的方向。 这个案例将限制角色在移动和目标上的自由。 不好。 使用第二个触摸操纵杆(相反的手)来select火的方向 – 这个变种看起来比前两个更好,但我仍然不知道它会是多么舒适。 我自己试过,看起来有点复杂,我同时遵循两个控制。 你有没有看到任何游戏达到相同的目标? 你可以推荐什么?

如何改变虚拟手柄input方向取决于相机的旋转,所以玩家移动到当前的方向?

我有一个场景设置在玩家移动和虚拟摇杆input旋转。 我有button,将相机旋转到我的播放器的后面,在那一点上,我想改变游戏杆的input方向,所以它将我的玩家移向当前的前进方向。 游戏杆脚本: 1)处理事件的脚本: public class joystickEvents extends EventSystems.EventTrigger{ var position:Vector2=Vector2.zero; public var joyStickHolder:Transform; private var pointerUp:boolean=false; function Update(){ if(position!=Vector3.zero && pointerUp){ position=Vector3.Lerp(position,Vector3.zero,5*Time.deltaTime); } } public function OnDrag(data:EventSystems.PointerEventData){ position=data.position-joyStickHolder.position; } public function OnPointerUp(data:EventSystems.PointerEventData){ pointerUp=true; } public function OnPointerDown(data:EventSystems.PointerEventData){ pointerUp=false; } } 2)游戏杆运动脚本: public class joystick extends MonoBehaviour{ var joystickEvents:joystickEvents; var joystickHolder:RectTransform; var dir:Vector3; private var […]

如何判断SDL2中是否释放(未按下)游戏杆轴?

我想实现一个事件监听器,根据操纵杆上的推动轴的方向触发角色移动(左/右/上/下或停留)。 由于抖动,我发现的方法是将(0,0)附近的区域设置为死区。 但是,通过这种方法,我不能分辨轴何时不再被推回到中心。 这是一个非常典型的使用操纵杆轴,但我找不到有用的信息在其他地方。 提前致谢。

Windows Phone 7的虚拟游戏杆(XNA)

在iOS空间中,有一个基于Cocos2D的强大库,名为SneakyInput,用于在屏幕上创建一个虚拟游戏杆。 我只是想知道是否有一个(最好是免费的)像XNA那样的库? 如果没有,有没有人可以指导我如何推出自己的资源? 这听起来不太复杂,但是当我认为“不应该那么困难”的时候,我通常会忽略更小的细节。

游戏杆的2D的例子问题

我已经在网上search了一个答案,并且有相似的话题,但是对我来说没有任何作用,我不知道为什么。 我只是想使用游戏杆来移动我的精灵,因为我在math方面没有用处,所以我使用了一个例子,我在这里发布代码: public float initx = 50; //og 425; public float inity = 300; //og 267; public Point _touchingPoint = new Point(50, 300); //og(425, 267); public Point _pointerPosition = new Point(100, 170); private Boolean _dragging = false; private MotionEvent lastEvent; @Override public boolean onTouchEvent(MotionEvent event) { if (event == null && lastEvent == null) { […]

为什么我的2D自上而下的游戏杆代码偶尔停止工作?

我正在从事2D自上而下的游戏,并且正在研究玩家控制。 我有以下代码当前控制一个球员精灵: void Update () { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); float headingAngle = Mathf.Atan2(moveHorizontal, moveVertical); Debug.Log("Heading angle: " + (headingAngle * Mathf.Rad2Deg).ToString() + " degrees."); Quaternion newHeading = Quaternion.Euler(0f, 0f, headingAngle * Mathf.Rad2Deg); if (transform.rotation != newHeading && (moveHorizontal != 0f || moveVertical != 0f)) { Debug.Log("Turning. Rotation: " + transform.rotation […]

如何计算游戏杆边距/阈值?

在操纵杆上,浮动位置值从-1到1在x轴和y轴上,如何实现适当的math,增加“较低”和“较高”的圆形边界? 例如,如果下边距是半径的25%(0.25浮点数),而上边距是50%(0.5浮点数),则可能如下所示: 实际的“热”区是绿色的,这意味着: 灰色区域应该总是给出x / y的0,0读数。 绿色区域应该给出x和y的实际值 ,范围为-1到1 。 蓝色应该总是给1 。

Unity游戏杆input动作奇怪

在Unity中设置我的游戏杆轴并将它们扫过后,我发现Y轴在某些位置跳转到相反的方向。 所以,当我按下操纵杆时,input信息往往会指出它正在向下。 它有时也会在相反的方向上做到这一点。 它以某种方式与X轴位置绑定,使其特别怪异。

DigitalOnScreenControl中的旋钮不能移动。 为什么?

我在游戏中设置了一个DigitalOnScreenControl ,但是旋钮不动。 底座和旋钮在屏幕上绘制,但后者不会按照这里的AndEngine示例移动。 这是我的代码片段: this.mDigitalOnScreenControl = new DigitalOnScreenControl(300, 300, ResourceManager.getCamera(), ResourceManager.joystickControlBase, ResourceManager.joystickControlKnob, 0.1f, ResourceManager.getActivity().getVertexBufferObjectManager(), new IOnScreenControlListener() { @Override public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) { Log.v(TAG, "onControlChange"); } }); final Sprite controlBase = this.mDigitalOnScreenControl.getControlBase(); final Sprite knob = this.mDigitalOnScreenControl.getControlKnob(); controlBase.setAlpha(0.5f); controlBase.setOffsetCenter(0, 0); controlBase.setScaleCenter(10, 10); controlBase.setScale(1.25f); knob.setScale(1.25f); this.mDigitalOnScreenControl.refreshControlKnobPosition(); ResourceManager.getEngine().getScene().attachChild(this.mDigitalOnScreenControl); mDigitalOnScreenControl是之前定义的DigitalOnScreenControl对象。 我使用ResourceManager类来获取纹理区域和其他游戏资源,例如相机等。 […]