我正在使用delta时间,所以我可以使我的程序帧速率独立.但是我无法获得相同的跳跃高度,角色总是在较低的帧速率下跳得更高.
变量:
const float gravity = 0.0000000014f;
const float jumpVel = 0.00000046f;
const float terminalVel = 0.05f;
bool readyToJump = false;
float verticalVel = 0.00f;
Run Code Online (Sandbox Code Playgroud)
逻辑代码:
if(input.isKeyDown(sf::Keyboard::Space)){
if(readyToJump){
verticalVel = -jumpVel * delta;
readyToJump = false;
}
}
verticalVel += gravity * delta;
y += verticalVel * delta;
Run Code Online (Sandbox Code Playgroud)
我确定增量时间是正确的,因为角色水平移动很好.
无论帧速率如何,我如何让我的角色跳跃?
我正在制作一个带有精灵套件的游戏,现在我想知道最好的方法是让对象'跳'.所以它将以几个像素垂直启动.这是我想要跳转的对象的代码:
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"bal.png"];
sprite.position = CGPointMake(self.frame.size.width/4 + arc4random() % ((int)self.frame.size.width/2), (self.frame.size.height/2 + arc4random() % ((int)self.frame.size.height/2)));
sprite.color = [self randomColor];
sprite.colorBlendFactor = 1.0;
sprite.xScale = 0.2;
sprite.yScale = 0.2;
[self addChild:sprite];
sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2];
self.physicsWorld.gravity = CGVectorMake(0.0f, -4.0f);
Run Code Online (Sandbox Code Playgroud) 我有一个数组selected,其中包含一组选定的选项.我想使用该数组为disabled这些选项添加属性.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Vue-js Control </title>
</head>
<body>
<div id="demo">
<select v-model="selected" multiple>
<option v-for="option in options" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
<span>Selected: {{ selected }}</span>
</div>
<script type="text/javascript" src='http://cdnjs.cloudflare.com/ajax/libs/vue/1.0.16/vue.min.js'></script>
<script type="text/javascript">
new Vue({
el: '#demo',
data: {
selected: ['A','B','D'],
options: [
{ text: 'One', value: 'A' },
{ text: 'Two', value: 'B' },
{ text: 'Three', value: 'C' },
{ text: 'Four', value: 'D' },
{ text: 'Five', value: …Run Code Online (Sandbox Code Playgroud) 我正在研究2D平台游戏作为学习实验,目前在跳跃逻辑方面遇到了一些麻烦.我知道重力应该应用于玩家,这会影响跳跃和下降过程.这是我目前如何实施它.
isJumpingbool我只是想知道玩家是应该上升还是下降,以及他们目前是否处于跳跃状态,所以他们不会再跳.
spriteJumpPosition 是我用来限制玩家跳跃高度的值(默认值为0,上限为10,下面是硬编码).
void UpdateGravity()
{
// Check if player is currently jumping
if (isJumping == true)
{
if (spriteJumpPosition < 10)
{
spritePosition.Y += (float)gravity;
spriteJumpPosition += gravity;
}
else if ( spriteJumpPosition >= 10 )
{
isJumping = false;
spritePosition.Y -= (float)gravity;
spriteJumpPosition -= gravity;
}
}
else if ( isJumping == false )
{
if (spriteJumpPosition > 0)
{
spriteJumpPosition -= (int)gravity;
spritePosition.Y -= (float)gravity;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,当前的行为是玩家向下移动一点(可能2-3帧)然后开始上升,isJumping = false并且永远不会停止.我在这做错了什么?这只是完全错误的方法吗?
我正在尝试将新文件添加到我的工作目录中,然后通过执行以下操作来注册它们:
git add filename.php
Run Code Online (Sandbox Code Playgroud)
昨天我刚刚仔细检查了远程 gitlab 位置,昨天的所有新文件都已包含在内。
但是,现在每当我添加新文件时,我都会收到此错误:
pathspec filename.php didn't match any files
Run Code Online (Sandbox Code Playgroud)
如果我这样做git status,则确认新文件没有被注册。
ls- 新文件未显示,尽管它们实际上位于特定文件夹中。
我没有gitignore对此事进行任何更改或任何其他设置,并且我已经仔细检查我是否位于正确的文件夹和正确的分支上。
在我的代码中,每当变量得分比第一次高500时,变速就需要增加.所以,当得分为500时:speed++.得分为1000时:speed++再次,依此类推.
这是我的代码:
import java.awt.*;
public class Enemy {
static int x = -100;
static int y = -100;
Player player;
private int enemy_xspeed = 0;
private int enemy_yspeed = 0;
private int speed = 0;
public Enemy(Player player) {
this.player = player;
}
public void update(){
if(Player.getX() < x){
enemy_xspeed = -2 - speed;
}
if(Player.getX() > x){
enemy_xspeed = 2 + speed;
}
if(Player.getY() > y){
enemy_yspeed = 2 + speed;
}
if(Player.getY() < y){ …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个递归函数,如下所示:
private static int partition(int[] array, int low, int high, int pivot_index){
// just irrelevant code
System.out.println("Somehow this point has been reached 1");
if(low < high){
System.out.println("Somehow this point has been reached 2");
//some more code
partition(array,low,high,pivot_index);
}else{
System.out.println("Somehow this point has been reached 3");
//some more code
return high;
}
System.out.println("Somehow this point has been reached 0");
return -1;
}//partition
Run Code Online (Sandbox Code Playgroud)
令我吃惊的是,在运行我的程序并调用此函数后,编译器将打印:
point 1 reached; point 2 reached; point 1 reached; point 3 reached. point 0 reached.
Run Code Online (Sandbox Code Playgroud)
哪个返回-1会导致程序的整个逻辑崩溃.我确信我在这里遗漏了一些东西但是我的程序在 …
我在接受采访时被问到以下问题:
将两个迭代器组合在它们的排序内容上,这样得到的迭代器应该在O(1)时间内以排序顺序迭代这两个迭代器的组合(这些迭代器迭代一个String).
我写了下面的代码,但我确信它在O(1)时间内没有执行.您对匹配面试问题设置的约束有什么建议?
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class iteratorCombine {
// assumption1: elements are hardcoded
// assumption2: both iterators have equal number of elements
public static void main(String[] args) {
iteratorCombine testObj = new iteratorCombine();
Set<String> firstSet = new TreeSet<String>();
Set<String> secondSet = new TreeSet<String>();
Set<String> combinedSet;
firstSet = testObj.storeElements1(firstSet);
secondSet = testObj.storeElements2(secondSet);
Iterator<String> it1 = firstSet.iterator();
Iterator<String> it2 = secondSet.iterator();
combinedSet = testObj.combine(it1, it2);
// output
Iterator<String> itComb = combinedSet.iterator();
while(itComb.hasNext()){
System.out.println(itComb.next());
}
}
public Set<String> …Run Code Online (Sandbox Code Playgroud) 我看到有一些内置包可以从任何脚本中导入,例如:
from datetime import date
today = date.today()
print today
Run Code Online (Sandbox Code Playgroud)
如何创建一个简单的程序包并将其添加到系统库中,以便像datetime上面的示例一样导入它?