gpt4 book ai didi

c# - 使用正弦创建跳跃算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:39 25 4
gpt4 key购买 nike

我正在用 C# windows 窗体应用程序编写一个 2D 游戏。

我想制作 Bubble Trouble 游戏,但我对跳跃算法感到困惑。我发现我必须使用正弦函数才能使其逼真。

有球类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace BubbleTrouble
{

class Ball
{
int level,gapX=2,gapY=2,x,y;
bool up;
public static int[] levelsPX={0,1,2,3,6,8,9,11};
Panel panel;
Graphics gr;

public Ball(int lvl,int x,int y,bool isUp,Graphics gr)
{
this.gr = gr;

up = isUp;
this.x = x;
this.y = y;
if (up)
gapY = -gapY;

level = lvl;
}

public Ball[] pop()
{
if (level == 0)
return null;
else
{
bool up1 = true;
if(y>=20)
up1=false;
Ball first = new Ball(level - 1, x, y,up1,gr);
Ball second = new Ball(level - 1, first.x + 10 * levelsPX[level-1], y, up1,gr);
Ball[] a = { first, second };
level = 0;
return a;
}
}

public void paint()
{
gr.DrawImage(BubbleTrouble.Properties.Resources.ball, x, y, 10 * levelsPX[level], 10 * levelsPX[level]);
}
public void getNextPos()
{
if ((y <= 0) || (y + 10 * levelsPX[level] >= 364))
{
gapY = -gapY;
up = !up;
}
if ((x + 10 * levelsPX[level] >= 681) || (x <= 0))
gapX = -gapX;
if (y < 70)
gapY = -gapY;
//Math.sin
x=x+gapX;
y=y+gapY;

}

}
}

球有X和Y整数,还有2个整数gapX和gapY。gapX 和 gapY 用于改变球的方向,例如现在球在位置 (30,30) 那么在这种情况下,下一个位置将是 (30+gapX,30+gapY),在此之后(30+2gapX,30+2gapY) 并且当球脱离形式边界时,间隙改变符号。例如,如果 X 刻度上的位置大于形状边界,则将 gapX 更改为 -gapX,这样球将向另一个方向移动。

但是,我想要球以波浪形式跳跃,但我不知道如何使用球的 X Y 轴以及 gapX 和 gapY 来做到这一点。我发现正弦函数对我有帮助,但我仍然不知道在哪里以及如何使用这个函数。

请帮助我,我正在尝试解决这个问题,但我没有找到任何解决方案。

谢谢,阿萨夫。

最佳答案

一个小方法作为提示。您必须根据 Playground 的高度和宽度进行调整:

/// <summary>
/// Calculates ball bouncing.
/// </summary>
/// <param name="x">X position (0 .. 360)</param>
/// <returns>Returns y position (0 .. 1)</returns>
private double Position(double x)
{
x *= Math.PI / 180;
return Math.Abs(Math.Cos(x)); // Always positive
}

关于c# - 使用正弦创建跳跃算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com