Articles of 逻辑

弹跳球isssue

我目前正在研究二维弹跳球物理,使球弹起和击退。 物理行为正常,但最后速度保持+3,然后0不停,即使球已经停止弹跳。 我应该如何修改代码来解决这个问题? 这里是video显示它是如何工作的。 注意:Bandicam无法logging-3和0之间的速度转换。因此,当球停止弹跳时它只显示-3。 http://www.youtube.com/watch?v=SEH5V6FBbYA&feature=youtu.be 这是生成的报告: https : //www.dropbox.com/s/4dkt0sgmrgw8pqi/report.txt ballPos = D3DXVECTOR2( 50, 100 ); velocity = 0; acceleration = 3.0f; void GameClass::Update() { // v = u + at velocity += acceleration; // update ball position ballPos.y += velocity; // If the ball touches the ground if ( ballPos.y >= 590 ) { […]

给定另一个网格索引确定网格顶点索引

当我解释我正在努力完成的事情时,请随身携带 下面的每个“X”代表一个网格顶点: 对于我的Unity3d GameObject(G1); 网格顶点按以下顺序存储在C#List对象中。 *注意网格索引“A”。 这是我知道的一个值 – 在这种情况下,A = 16(网格索引16)。 我有另一个GameObject(G2),它的形状是一样的(一个简单的矩形),但是网格顶点sorting不同。*注意网格索引'B'。 这是一个值我不知道,我想find这个值(网格索引) – 在这种情况下B = 17(网格索引17)。 正如你所看到的,除了旋转90度之外,网格排列几乎是一样的。 如果我知道A的“网格顶点索引”,我怎样才能findB的“网格顶点索引”? 什么是可以计算B的网格索引的algorithm? 我的尝试根本不工作: uint A = 16; uint nCols = 6; uint nRows = 4; // Technically both B and A sit on Row 3, Column 5 so if I can find A's row and column maybe […]

animation和逻辑结合的最佳实践

在游戏中,我经常遇到这种情况: 游戏逻辑决定了一些事情发生,当然逻辑是这样做的。 但游戏也有animation取决于逻辑。 像玩家去世 – >玩死亡animation – >重生。 但逻辑不能等待animation,所以我们必须解决这个问题。 或者把星际争霸2的攻城坦克当成变形单位,然后开始攻城animation,但逻辑是什么状态。 每个animation是否也有一个状态? 它只是一个无视所有animation的标志吗? 当我包括越来越多的animation时,它往往变得非常混乱。 希望有人能给我一个提示。

我们能否统一为不同的对象创建相同的名字类?

我有四个类似的对象在我的游戏中。 因为它们都是相似的,所以我创建了一个为所有这些脚本定义混搭的脚本。 为这些对象定义mash的脚本使用了一个名为radius的variables,这个variables是从其他文件(通过classname.radius )导入的。 半径在每一帧都更新,它是所有对象唯一不同的属性。 为了让不同的对象具有不同的半径,我认为会起作用的是,制作四个不同的同名classname名。 在它们中创建可变radius并给它们不同的值。 将第一个文件拖到第一个对象,第二个文件拖到第二个对象等等。当执行时,每次生成mash的脚本都会从被拖动到该对象的文件中考虑classname.radius 。 但是这是行不通的。 什么是错的,我该如何执行它? 似乎我搞乱OOPS的概念!

跳棋游戏背后的逻辑?

我开始做一个跳棋游戏,我已经把所有的graphics和棋盘都画出来了。 在我开始创作这些作品之前,我想知道怎样才能解决作品逻辑运动的一个简单方法。我应该制作一个每个正方形的表格,检测它是否有一块,如果是的话,是什么颜色的? (即0 =空,1 =红色,2 =黑色),或者你们对这个问题有更好的主意吗? 提前致谢。

比较可以是多种颜色的匹配游戏中块的最佳方式是什么?

我有一场比赛3-4场比赛,块可以是7种颜色之一。 另外还有7个区块是原来7种颜色的组合,例如红色和蓝色的区块,还有一个红色/蓝色的区块可以与红色或蓝色相配。 我原来的想法只是使用二进制操作。 int red = 0x000000001; int blue = 0x000000010; int redblue = 0x000000011; 那么只要做一个&操作,看看它们是否匹配。 这听起来像一个体面的计划,还是我过分复杂? 编辑: 更好的是它更具可读性。 int red = 1; int blue = 2; int red_blue = 3; int yellow = 4; int red_yellow = 5; 也许作为定义或静态variables?

我怎么知道一个球员何时超过了一个门槛?

当我为游戏添加时间奖励时,我需要帮助来计算逻辑。 如果他们升级,我只想用额外的时间奖励玩家。 目前当玩家的分数小于100时,不会给予奖励。 如果玩家的分数达到200,我想奖励玩家一些奖励时间。 我的问题是,如果得分是190,然后跳到210,200级的标志被通过,玩家没有奖励。 如果我打开逻辑来说明分数是在190到210之间,那么它可以奖励玩家190,200,210的分数,或者跳过180到220,完全绕过奖励。 我已经设置了一个bool BonusFlag的想法,但同样的问题出现,当我设置标志。 任何人都可以帮助提供一些关于如何克服这个障碍的逻辑?

Card / Tile Game,循环不会更新playerHand的element0

问题 我正在从另一个class级进入一个玩家的托盘(一个有瓦片列表的class级和一个布尔的数组,以显示托盘中的一个插槽已满)。 处理玩家的托盘时,我会在每个贴图之后更新列表和布尔数组。 布尔数组的第一个元素永远不会被填充,我认为它与我的循环的逻辑错误。 我正在寻找关于如何确保布尔数组的第一个元素在更新每个tile之后被填充的建议。 图像显示了在处理一个瓦片时检查器中布尔数组发生了什么。 图像的第二部分是当第二张牌被处理时。 背景 在Unity 2D中:我有一个Tile类, PlayerTileTray类, PlayerTileTrayManager类和TileManager类。 TileManager创建一个List并将元素添加到列表中,设置Tilevariables。 TileManager有一个交易方法和一个发送顶部瓷砖作为参数的OnTileSent(Tile sentTile)事件。 PlayerTileTrayManager使用OnTileSent方法来侦听事件。 PlayerTileTrayManager的工作是把这个tileSent放置在PlaceTileInFirstEmptySlotOfTrays方法中的几个_trays之一。 我目前正在使用称为_tray []的托盘数组。 如果_tray数组的下一个元素为null,则实例化一个代表托盘的gameObject Prefab,并将一个PlayerTileTray实例作为_tray [trayIndex]添加到预制件中。 PlayerTileTray有一个bools数组slotFull [],用来显示某个插槽是否已满。 在PlayerTileTrayManager中 :我通过_tray循环,然后通过该托盘的槽来调用PlayerTileTray的UpdateTrayWithTile方法UpdateTrayWiltTile将瓦片添加到_tray中的List,然后尝试更新_tray布尔variablesemptyTray,fullTray和slotFull []。 我有我目前正在使用嵌套for循环的主要问题 。 我曾尝试while while循环。 第一个布尔元素slotFull [0]永远不会被设置为true,尽管我试图使其为true。 当第一个分片发出时,slotFull [0]保持为假。 当第二个分片被发送时,slotFull [0]和slotFull 1都是真的; 其他一切的结果都已经实现,或者如果我可以修复slotFull更新的第一个元素的话。 TileManager.cs using UnityEngine; using System; using System.Collections; using System.Collections.Generic; public class TileManager :MonoBehaviour { //For testing […]

Portal 2创作工具:func_instance_io_proxy不工作?

我有一个func_instance(我自己做的)在我的地图上的一扇门。 当一个魔方失败时,它应该打开。 我也把一个检查标记指示器,以确保我的立方体的逻辑正确。 立方体熄灭时,复选标记指示灯亮起,但门不打开。 为了确保门正在工作,我把一个logic_auto放到了预装,当地图加载时打开了门。 这工作正常。 因此,我认为func_instance_io_proxy有问题,但我不知道是什么。 以下是一些截图: 多维数据集通过func_instance_io_proxylockingopenDoor继电器的触发input。 它也瞄准检查标记指示器,当立方体被失败时适当地点燃。 我的门func_instance。 左边的继电器打开门,右边的继电器将其closures。 logic_auto的目标是在启动时closeDoor继电器,当我去testing地图时门会closures,它会正确执行。 最后,func_instance_io_proxy以openDoor的触发器input为目标。 但是,当我尝试通过立方体访问它时,它不起作用,并且门不打开。 *顺便说一句,我在Linux上通过wine运行这个,这就是为什么它看起来像Windows 98 **关键问题,这是张贴这个正确的地方,因为它在技术上是制图,而不是游戏开发?

Unity3D,如何按下一个键,然后不能按下另一个键?

我正在做一个恐怖游戏,我想按一个键查找,而我闲置,我已经做了,但如果我按下W键它站在空闲,但向前浮动。 当我按下F键查找时,如何禁用W键? 一切工作正常我可以按F和LookUpanimation正在播放,如果animation上的KeyUp回到空闲。 我的问题是,如果我在查找animation中,当按F时,我也可以按W前进,但其浮动不行走。 我想停用这个function,所以我可以在空闲时按F键。 感谢帮助。 我的脚本: public float speed = 10f; public Rigidbody rgb; public Animator anim; bool walk = false; // Use this for initialization void Start () { rgb.GetComponent<Rigidbody> (); anim = GetComponent<Animator> (); } // Update is called once per frame void Update () { float move = Input.GetAxis ("Vertical"); anim.SetFloat […]