我11岁,刚开始编程,我正在用javascript在学校做一个简单的游戏平台。
现在,我正在编写使角色跳转的代码。这比角色的上下更加复杂,因为我希望动作流畅,看起来逼真。当角色跳跃时,它会快速地离开地面,然后随着它的上升而减慢,当它到达某个点时,它会开始慢慢地下降。它会加速,因为它下降(可能通过使用某种类型的加速度变量),然后击中地面,并完全停止。
我希望角色能够在空中左右移动,如果键被握住,跳一次,然后当角色触地时,如果仍然按住键,再跳一次。(游戏中的角色应该能够跳得很高)
我已经试过这样做了,但我也犯了一些可笑的错误。
下面是我的(非常坏的)代码:
//movement (x)
var maxSpeed = 12.5;
var xForce = 0;
var kingXPos = 0;
//movement (y)
var yForce = 0;
var kingYPos = 202;
//LV design
var floorHeight = 150;
var draw = function() {
//background and basics
background(255, 0, 0);
image(getImage("creatures/Winston"), kingXPos, kingYPos, 50, 50);
//level features (only the floor right now)
fill(0, 0, 0);
rect(0, 250, 400, floorHeight);
//right movement
if (keyIsPressed && keyCode === RIGHT) {
kingXPos = kingXPos + xForce;
xForce = xForce + 0.25;
if (xForce >= maxSpeed && keyIsPressed) {
xForce = maxSpeed;
}
}
//left movement
if (keyIsPressed && keyCode === LEFT) {
kingXPos = kingXPos + xForce;
xForce = xForce - 0.25;
if (xForce <= -maxSpeed && keyIsPressed) {
xForce = -maxSpeed;
}
}
//jump (not yet functional)
if (keyTyped && keyCode === UP && kingYPos === floorHeight + 50) {
kingYPos = kingYPos + yForce;
yForce = yForce - 0.5;
}
//other physics
if (!keyIsPressed) {
kingXPos = kingXPos + xForce;
if (xForce > 0) {
xForce = xForce - 0.25;
}
else if (xForce < 0) {
xForce = xForce + 0.25;
}
}
};发布于 2016-07-05 03:23:02
这对刚开始的人来说是相当令人印象深刻的。你似乎对几何学有直觉的理解。然而,有一些领域的知识,你可能不知道,因为你有多少教育。
在物理学中,描述运动的正确方程组是:
1. velocity = change_in_location / time
2. acceleration = change_in_velocity / time你需要注意的另一件事是重力是加速度的一种形式。具体来说,它是9.8m/s/s的向下加速度。
因此,重写上述所有内容:
new_location = (velocity * time) + old_location
new_velocity = (acceleration * time) + old_velocity如果假设有一个恒定时间的动画循环,则可以假定time = 1。因此,这可以简化为:
new_location = velocity + old_location
new_velocity = acceleration + old_velocity这足以模拟重力。既然重力只是一种加速度:
gravity = SOME_NUMBER; // tune this to get the gravity you want
kingYPos = kingYPos + kingYVelocity;
kingYVelocity = kingYVelocity + gravity;要跳下去,只要让物体在速度上瞬间提高:
// jump:
kingYVelocity = -SOME_OTHER_NUMBER; // negative because "up"注意:领域知识是编程之外的知识,程序员必须了解这些知识才能解决特定的问题。例如,编写会计软件的程序员应该具备一些会计知识。实际上,并不是行业中的所有程序员都在努力获取领域知识,因为有时会有系统分析师/顾问编写软件的需求。但是当你编写自己的软件时,你别无选择,只能获得一些领域知识。
https://stackoverflow.com/questions/38194362
复制相似问题