Articles of 控制

为跳跃机械添加宽容

我在平台游戏中为我的玩家写了一些跳码。 目前它有一些基本的逻辑,说如果他在地面上,玩家可以跳。 伪代码看起来像这样: ### Input Handling ### if(jumpButtonPressed){ if(onGround){ jump } } ### Player Update Loop ### onGround = false movePlayer resolveCollisions if(player collided with ground){ onGround = true } 这对于基本的静态瓷砖等级来说工作得很好,但是当玩家站在下降的平台上,或者在向下的斜坡上移动时,变得很难跳跃。 这样做的原因(在下降平台的情况下)就是平台已经从那个框架的下面移动了,所以那个时候他实际上并没有碰到地面,所以跳跃的条件不是实现。 有没有一种通用的方法来增加一些宽大的跳跃机制,这样玩家就可以跳起来,即使他们没有技术上的那种精确的框架? 这似乎应该是一个相当普遍的问题,但我似乎无法find任何类似的问题stackexchange或谷歌。

我怎样才能在configuration文件中有可读的键名?

给定一个文件映射到控件的键,如下所示: up w down s left a right d jump space run shift crouch ctrl 这些值需要转换成游戏命令和常量。 这些命令不像键盘键那样是一个问题; 一个键盘可以包含超过100个键,所以最后一件事是这样的: unsigned int pressedKey; if (value == "a") { pressedKey = KEY_A; } else if (value == "b") { pressedKey = KEY_B; } else if (value == "c") { pressedKey = KEY_C; } else if… 想到的是建立一个关键值对的映射,如下所示: std::unordered_map<std::string, unsigned […]

我应该如何帮助玩家驾驶狭窄的电网路口?

我正在寻找一种技术来帮助玩家在角色持续运动的同时在狭窄的道路上行驶。 在交叉路口改变方向时,要成功转弯时很难确定方向。 如果时间不合适,角色会被卡住。 我怎样才能让玩家更容易? (这是一个大学任务。)

Box2D平台游戏:为什么水平移动停止跳跃?

我正在写我的sBox2D游戏角色的移动代码,但是我的跳跃实现失败: 当我按下Jump键时,字符跳转OK。 但是,当我同时按下跳转键和另一个键(如左箭头键)时,它会阻止跳转的发生。 我正在使用applyForceToCenter和setLinearVelocity移动字符。 问题是什么? 这是我如何绑定键触发移动: // press W key (aka Up key or BTNup) if (RHInput.isDown(RHInput.BTNup)) { if(rhcl.isPlayerOnGround()) { toniBody.applyForceToCenter(0, 100, true ); System.out.println("Toni jumps"); } } // press A key (aka Left key or BTNleft) if (RHInput.isDown(RHInput.BTNleft)) { if(rhcl.isPlayerOnGround()) { toniBody.setLinearVelocity(-5, 0); System.out.println("Toni walks left"); } else { toniBody.setLinearVelocity(-1, 0); } }

朝移动方向旋转角色

所以我的问题是我的角色总是以它正在寻找的方式进行拍摄。 不幸的是我的解决scheme似乎是一个非常糟糕的。 我并不是真正能够解决我的问题。 无论是控制器还是触摸屏控制。 我已经评论了许多东西,你可以看到,但没有任何正确的工作。 这是一个2D自上而下的游戏。 using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { public int dead = 0; //Moving public float maxSpeed = 3f; public float rotSpeed = 100f; public Transform target; float zo; float opZ; //Shooting public Vector3 bulletOffset = new Vector3(0, 0.5f, 0); public GameObject bulletPrefab; int bulletLayer; public float […]

奇怪的情况下,一个关键不工作

我用Java完成了一个游戏。 它在我的电脑上工作得很好。 发送给一个朋友。 在他的电脑上,出于某种原因,用来玩的钥匙在游戏中不起作用。 (它可以在任何其他环境下工作,如Web浏览器)。 他试着按下这个键,没有其他的按键。 仍然没有工作。 所以这不是一个“关键组合”问题。 我们都使用Windows和最新的JRE版本。 会是什么呢? 这真的很奇怪。 谢谢

在LWJGL中创建键盘/鼠标控件有什么替代方法?

所以我目前正在通过OpenGL教程,使用LWJGL来完成我所有的工作。然而当我开始了解如何访问这个库中的键盘和鼠标事件的时候,我偶然发现了这个小gem: public static void poll() 轮询键盘的当前状态。 使用isKeyDown方法访问轮询的值。 通过使用这种方法,如果不够快的轮询,就有可能“错过”键盘键 (来自http://www.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html#poll () ) 因此,为了使用缓冲input(作为LWJGL中的多个键盘/鼠标input检查的顶级答案调用它),你必须使用这个poll()方法。 这意味着无论我做什么,如果我使用LWJGL,我会错过按键。 我用这个代码做了一个testing: while(Keyboard.next()) { int character = Keyboard.getEventCharacter(); int key = Keyboard.getEventKey(); String charName= Keyboard.getKeyName(key); System.out.println(charName+""+character); } 同时按下buttonZXCV时,示例输出如下:Z122 V118 X120 C0 V0 Z0 正如你所看到的,在缓冲区中没有findCbutton和X释放。 在某些情况下,单次按键的缓冲区中都没有按键和释放。 我需要的不是这种情况,加快投票并不能解决问题(为什么甚至是解决scheme?)。 那么这个系统有什么select呢? (PS是同时按下这4个button在其他应用程序中正确logging)

如何在场景编辑器中逐个像素地移动对象?

我试图find一种方法来在场景编辑器中逐个像素地移动对象(至less在我的屏幕上)。 我尝试了很多不同的button,但似乎没有任何工作,请告诉我Unity有这个function,因为通过鼠标或改变X和Y自己是非常乏味的。

操纵杆像手机统一控制

我怎样才能实现操纵杆像手机上的控制? 例如,我有一个2D平台游戏,角色应该一直向右移动,右手持续移动,反之亦然,就像一个真正的游戏杆。 我是团结的初学者,所以不知道从哪里开始。 商店中是否有任何资产可以创建这些控件?

滑动并保持角色移动不起作用

这里我的PlayerControl脚本 void Update () { foreach (Touch FingerTouch in Input.touches) { if(FingerTouch.phase == TouchPhase.Began) { FingerInitialPosition=FingerTouch.position.x; } if(FingerTouch.phase == TouchPhase.Moved) { FingerMovedPosition=FingerTouch.position.x; if(FingerMovedPosition>FingerInitialPosition) { charcter.transform.Translate(Vector2.right * speed * Time.deltaTime); } if(FingerMovedPosition<FingerInitialPosition) { charcter.transform.Translate(-Vector2.right * speed * Time.deltaTime); } } if(FingerTouch.phase == TouchPhase.Ended) { FingerInitialPosition=0f; FingerMovedPosition=0f; } } } } 这里的问题是,当您轻扫并按住触摸屏时,玩家不会移动,但只有在持续滑动时才会移动。 你可以帮助你的代码错误或缺less什么,以便玩家移动时,刷卡和举行?