小编Ste*_*nov的帖子

为游戏选择好的,非冲突的键绑定

PC键盘不是为游戏设计的,为降低价格做出了妥协,因此出现了一些问题.最重要的是,当您按住某些键盘时,某些键不会对按键作出反应.

我的游戏有两个用户在同一台​​PC上实时控制两个角色(即不回合).问题的一个例子:玩家1保持向上和向左进入对角线方向.然后玩家2无法向右(带有"D").除了仅仅是烦人之外,它还会给那些选择使用这个bug作为欺骗的玩家带来不公平的优势.不好玩 :(

基本命令是:射击,左右走动和跳跃.使用LeftControl和RightControl完成拍摄,它们不会与任何东西发生冲突,因此我们只考虑移动键.

在我的笔记本电脑上,最明显的键绑定组合失败:

  • WAD和箭头键失败,Up + Left + S和Up + Left + D.
  • IJL和箭头键失败,Down + Right + J(虽然Down在技术上未使用,但玩家通常会将其保持不动)
  • 箭头键和小键盘键失败,Down + Left + NumpadLeft
  • 像WAD和IJL这样的全字母组合往往会起作用,但我不喜欢不使用箭头键,并且将用户的手挤在一起.

是否有一个网站列出了各种键盘上常见支持的键盘的统计信息,以帮助我做出违约决定?(它们是可配置的,但默认值很重要.)我似乎记得一个名为keyboardssuck.com的相关网站,但我现在找不到它.

你是怎么处理这个问题的?刚忽略了吗?

问题取决于操作系统,API,主板吗?还有什么?我认为这只取决于键盘型号,但必须要问.

编辑:现在我知道这是什么叫:"翻转"

keyboard input

6
推荐指数
1
解决办法
952
查看次数

"高对比度"曲线的快速公式

我的内部循环包含一个计算,分析显示有问题.

想法是采用灰度像素x(0 <= x <= 1),并"增加其对比度".我的要求相当宽松,如下:

  • 对于x <.5,0 <= f(x)<x
  • 对于x> .5,x <f(x)<= 1
  • f(0)= 0
  • f(x)= 1 - f(1 - x),即它应该是"对称的"
  • 优选地,该功能应该是平滑的.

因此图表必须如下所示:

图形.

我有两个实现(他们的结果不同但两者都符合):

float cosContrastize(float i) {
    return .5 - cos(x * pi) / 2;
}

float mulContrastize(float i) {
    if (i < .5) return i * i * 2;
    i = 1 - i;
    return 1 - i * i * 2;
}
Run Code Online (Sandbox Code Playgroud)

因此,我要求对这些实现之一进行微优化,或者为您自己的原始,更快的公式.

也许你们其中一个人甚至可以把这些小事扭曲;)

math optimization formula

5
推荐指数
2
解决办法
2578
查看次数

foreach(Derived obj in new List <Base>())

以下代码有什么作用?

class Base { }
class Derived : Base { }
class Test
{
    void Foo(List<Base> list)
    {
        foreach (Derived obj in list)
        {
            // ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我没想到它甚至可以编译,但确实如此.

c# syntax polymorphism foreach inheritance

5
推荐指数
2
解决办法
1952
查看次数

公共列表<(Of <(<'T>)>)> .. :: ..枚举器?

我正在查看有关List.GetEnumerator 的MSDN文档.

他们说C#方法签名是:

public List<(Of <(<'T>)>)>..::..Enumerator GetEnumerator()
Run Code Online (Sandbox Code Playgroud)

我期待这个更简单的签名:

public List<T>.Enumerator GetEnumerator()
Run Code Online (Sandbox Code Playgroud)

他们的签名是什么意思,所有标点符号和"Of"关键字?

编辑:嗯,我想如果没有人看到这种语法,那么MSDN文档只是有点儿麻烦,而这就是全部.

c# generics methods syntax signature

5
推荐指数
1
解决办法
283
查看次数

最新的Subversion(1.9.4)的svnbook在哪里?

官方svnbook网站包含1.7的本书和"夜间构建"1.8的在线版本.当1.9.4存在时,不确定1.8如何计算每晚,但无论如何:)

哪里可以找到最新Subversion(1.9.4)的svnbook的在线版本?

svn documentation

5
推荐指数
1
解决办法
862
查看次数

QML 导入语句:为什么要指定模块版本?

我知道我用什么版本的 Qt 运送我的应用程序。而且我认为 Qt 的单个版本只包含每个 QML 模块的单个版本。所以如果我要写:

import QtQuick
Run Code Online (Sandbox Code Playgroud)

(未指定版本),这将是明确的。那么为什么要指定模块版本呢?

versioning import qt module qml

5
推荐指数
1
解决办法
909
查看次数

SoundManager2具有不规则的延迟

我定期播放一些音符.每一个都会延迟一个随机的毫秒数,从而产生刺耳的不规则效果.我如何解决它?

注意:只要它一致,我就会有一些延迟.

"实现你自己的小型SoundManager2替换,为时间敏感的播放进行了优化"的答案是可以的,如果你知道如何做到这一点:)但我试图避免在Flash中重写我的整个应用程序.

有关可听延迟为零的应用程序示例,请参阅基于闪存的ToneMatrix.

测试用例(在这里看到它拉链):

<head>
<title></title>
<script type="text/javascript" 
src="http://www.schillmania.com/projects/soundmanager2/script/soundmanager2.js">
</script>
<script type="text/javascript">
soundManager.url = '.'
soundManager.flashVersion = 9
soundManager.useHighPerformance = true
soundManager.useFastPolling = true
soundManager.autoLoad = true

function recur(func, delay) {
    window.setTimeout(function() { recur(func, delay); func(); }, delay)
}

soundManager.onload = function() {
    var sound = soundManager.createSound("test", "test.mp3")
    recur(function() { sound.play() }, 300)
}
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript audio latency soundmanager2

4
推荐指数
1
解决办法
2548
查看次数

在.NET中,为什么事件连接顺序如此重要?

using System;

static class Program
{
    static event Action A = delegate { };
    static event Action B = delegate { };

    static void Main()
    {
        A += B;
        B += ()=>Console.WriteLine("yeah");
        A.Invoke();
    }
}
Run Code Online (Sandbox Code Playgroud)

这不打印任何东西,但如果我交换Main的前两行,它确实如此.

.net events delegates

4
推荐指数
1
解决办法
66
查看次数

将信号连接到插槽,但只调用一次插槽,然后自动断开它们的连接

考虑以下JS代码:

function handleSig() {
    emitter.someSig.disconnect(handleSig);
    // do some work here
}

emitter.someSig.connect(handleSig);
Run Code Online (Sandbox Code Playgroud)

是否可以在没有显式断开连接和命名函数的情况下进行编写?

理想情况下,我想要这样的东西:

emitter.someSig.connect(
    function() {
        // do some work here
    },
    Qt.SingleShotConnection
);
Run Code Online (Sandbox Code Playgroud)

几乎重复:第一次发出信号后自动断开连接 -但是这个问题与Python有关,而我的问题与QML和C ++有关。

qt signals-slots qml observer-pattern qtquick2

4
推荐指数
2
解决办法
2243
查看次数

Qt Quick 孩子的加载顺序有规定吗?

例如,是否保证子项的初始化顺序与它们在源代码中出现的顺序相匹配?

注意:“初始化子项”是指“初始化子项及其所有子项、后代、绑定等”。

qt qml order-of-execution qtquick2

4
推荐指数
1
解决办法
1052
查看次数