我正在做一个2D平台的角色控制器,我使用自己的物理模型(不是标准的物理模型和RigidBody2D组件)用Unity3D来实现它,不管怎么说,我基本上完成了它,但问题是跳跃,它是令人满意的,但我希望当角色达到跳跃的峰值时,它在空中停留的时间更长一些,但不使用计时器,我的意思是,我希望角色在接近跳跃峰值时上升得更慢,所以跳跃曲线变得更宽。
我处理速度和移动的方式是这样的:-我有一个代表当前速度的重力速度,它是根据角色的当前状态(行走,奔跑,空闲,...)在每一帧中设置的-我有一个浮点重力,这是一个固定的浮点代表重力-当玩家跳跃时,我将它的速度.y设置为jumpVelocity,并从它中减去( V
我想做一条轨迹线,上面写着物体的去向,就像愤怒的小鸟一样。我做了一些研究,似乎spriteKit中的物理是计算出来的,就像在现实生活中使用si单位和其他东西一样。使用位移公式∆x = Vi∆t + 1/2a∆t^2,我用这个公式设置了物体在脉冲之后的九个球的位置。
这就是我迄今尝试过的:
func calculateTrajectory(mass: CGFloat, force1: CGFloat, force2: CGFloat){
for i in 0...8{
var x = CGFloat()
var y = CGFloat()
我试图在我的游戏中添加一个碰撞,这样一旦玩家与梯子相撞,y轴(由重力控制)的速度超过0(这意味着重力被使用)。但我遇到的问题是,一旦我尝试使用梯子,碰撞似乎永远不会发生,如果有的话,重力会阻碍并向下拉。另一个问题是,我不知道在哪里添加碰撞,以检查玩家是否不再与梯子碰撞,这意味着您在其中一个平台上。
我试图通过使控制台打印为真(如果正在发生)来检查碰撞,但这似乎只有当我在梯子的左边时才起作用。
class Ladder(pygame.sprite.Sprite):
def __init__(self, x, y, pic):
self.xpos = x
s
所以,为了学校的一个项目,我一直在尝试做一个跳跃装置。然而,我一直遇到的问题是,玩家只能漂浮在空中,而不是在达到一定的跳跃高度后倒下。 我尝试过很多方法,包括当按下up键时的正常想法,将跳跃设置为true,然后在actionPerformed方法中,将yVelocity设置为-4。但是,当单击跳转键时,我记录了当时的yPosition,当当前yPosition小于原始位置-50时,我将yVelocity设置为0,并将fallVelocity设置为1。 下面是我的actionPerformed方法中的代码: if (jumping) {
if (yPos <= h
我有一个变量tail。我在创建构造函数时为这个变量设置了一个值。我有一个changeTail()方法,它周期性地改变尾部10个像素(增加10个像素,然后减少10个像素)。此方法在update方法中调用,因此这是连续的。
我有另一个方法speedUp(),当分数增加10时,它加快了玩家的速度。为了获得分数的当前值,这也是在update方法中调用的。所以,当我想要加速游戏时,我也想让尾巴更长。所以我使用speedUp()为tail设置了一个新值。
但问题是,由于speedUp()在update方法中被调用,它会一直为tail设置相同的值,现在tail不会像以前那样改变速度了。
下面是我的代码:
c