- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Android 中编写一个游戏,其中敌方船只需要以星形图案围绕其自身开火。基本上,对于我设置敌舰开火的任意 X 次射击,我希望敌舰将自身周围的 360 度除以射击次数,并以精确的等边角度进行射击。因此,将发射 3 发子弹,第一发射击为 360 度,第二发射击为 120 度,第三发射击为 240 度。 4 个镜头将是 360,90,180,270 等等。然后每个镜头都会沿对角线向外移动,直到击中屏幕边缘(或途中的其他物体)。到目前为止,一切都很好。这是我的代码 - 我显然做错了什么,因为虽然四枪会向四个相同的方向(北、南、东、西)射击,但三枪或六枪或八枪(等)会向错误的方向射击。只是角度不正确。我很感激对此的任何帮助,因为我已经为此苦苦挣扎了很长一段时间。在下面的示例中,iShotNumber 是 Volley 中的射击次数。距离是镜头在一个“刻度”内移动的距离(以像素为单位)。炮弹以阵列形式围绕船的圆周添加,然后通过每个“滴答声”将炮弹向外推进一步。
围绕船的圆周绘制镜头的逻辑:
public void addShot(Context ctx, int iShotNumber, float distance) {
for (int iShot=1; iShot<=iShotNumber; iShot++) {
double
dAngle =0, //angle of the shot
dCosFactor=0, //factor on the x-axis
dSinFactor=0; //factor on the y-axis
float
fNewX = 0, //new position on the x-axis
fNewY =0; //new position on the y-axis
dAngle = 360/iShotNumber;
dAngle = dAngle*iShot;
if (iShotNumber == 1) {dAngle=180;} //if there's only one shot then fire straight down
if (dAngle!=360 && dAngle!=180) //if its 360 or 180 then fire straight up or straight down - no need for X
{
fNewX = (float) (getShipRadius()*Math.cos(Math.toRadians(dAngle)));
if (dAngle<=180) {fNewX=fNewX+distance;} else {fNewX=fNewX-distance;}
fNewX=fNewX+getXLocation();
}
else {fNewX=getXLocation();}
if (dAngle!=90 && dAngle !=270) //if its 90 or 270 then fire straight right or straight left - no need for Y
{
fNewY = (float) (getShipRadius()*Math.sin(Math.toRadians(dAngle)));
if (dAngle<=90||dAngle>=270) {fNewY=fNewY+distance;} else {fNewY=fNewY-distance;}
fNewY=fNewY+getYLocation();
}
else {fNewY=getYLocation();}
if (dAngle>=90&&dAngle<=180) {dSinFactor = Math.sin(Math.toRadians(dAngle)-90); dCosFactor = Math.cos(Math.toRadians(dAngle)-90);}
else if (dAngle>=181&&dAngle<=270) {dSinFactor = Math.sin(Math.toRadians(dAngle)-180); dCosFactor = Math.cos(Math.toRadians(dAngle)-180);}
else if (dAngle>=271&&dAngle<360) {dSinFactor = Math.sin(Math.toRadians(dAngle)-270); dCosFactor = Math.cos(Math.toRadians(dAngle)-270);}
else if (dAngle==360) {dSinFactor = Math.sin(Math.toRadians(dAngle)-271); dCosFactor = Math.cos(Math.toRadians(dAngle)-271);}
else {dSinFactor = Math.sin(Math.toRadians(dAngle)); dCosFactor = Math.cos(Math.toRadians(dAngle));}
//dSinFactor = Math.sin(Math.toRadians(dAngle)); dCosFactor = Math.cos(Math.toRadians(dAngle));
//if (dSinFactor<=0){dSinFactor = dSinFactor*-1;} //neutralize negative angles on upshots
//if (dCosFactor<=0){dCosFactor = dCosFactor*-1;} //neutralize negative angles on rightshots
if ( MainActivity.iDebugLevel >= 1) {Log.d("EnemyShip-addShot","add shot number " +String.valueOf(iShot)
+ " with dAngle " +String.valueOf(dAngle) +" cosan was " +String.valueOf(dCosFactor) +" sinan was " +String.valueOf(dSinFactor));}
if ( MainActivity.iDebugLevel >= 2) {Log.d("EnemyShip-addShot","add shot number " +String.valueOf(iShot) + " with fNewX " +String.valueOf(fNewX));}
if ( MainActivity.iDebugLevel >= 2) {Log.d("EnemyShip-addShot","add shot number " +String.valueOf(iShot) + " with fNewY " +String.valueOf(fNewY));}
if (dAngle==90||dAngle==270) {newShot = new ShotClass(ctx, fNewX, fNewY, dCosFactor /*x-angle*/, 0 /*y-angle*/);} //fire straight to the right or left
else if (dAngle==360||dAngle==180) {newShot = new ShotClass(ctx, fNewX, fNewY, 0 /*x-angle*/, dSinFactor /*y-angle*/);} //fire straight up or down
else {newShot = new ShotClass(ctx, fNewX, fNewY, dCosFactor /*x-angle*/, dSinFactor /*y-angle*/);} //fire at an angle
if ( dAngle <= 90 || dAngle >= 270) {
newShot.setShotGoingUp(true);
}
else
{
newShot.setShotGoingUp(false);
}
if ( dAngle <= 180 ) {
newShot.setShotGoingRight(true);
}
else
{
newShot.setShotGoingRight(false);
}
if ( MainActivity.iDebugLevel >= 1) {Log.d("EnemyShip-addShot","add shot number " +String.valueOf(iShot) + " with goingup " +String.valueOf(newShot.getShotGoingUp()) +" with goingright " +String.valueOf(newShot.getShotGoingRight()));}
arShots.add(newShot);
if ( MainActivity.iDebugLevel >= 2) {Log.d("EnemyShip-addShot","add shot number " +String.valueOf(iShot) + " with position " +String.valueOf(getXLocation()) +" " +String.valueOf(getYLocation()) +" firing params: " +String.valueOf(dCosFactor) +" " +String.valueOf(dSinFactor) +" angle was " +String.valueOf(dAngle));}
}
以对角线发送镜头的逻辑:
inpDistance = inpDistance * .2f; //slow down the shot to one fifth speed
for (int iShotInTheSequence=1;iShotInTheSequence<=inpNumberShots;iShotInTheSequence++) {
fFactor = (float) (inpDistance * getYFiringAngle());
if ( getShotGoingUp() ) { //shot is going up
fYLocation = fYLocation - fFactor;
} //shot is going up
else {//shot is going down
fYLocation = fYLocation + fFactor;
} //shot is going down
fFactor = (float) (inpDistance * getXFiringAngle());
if ( getShotGoingRight() ) { //shot is going right
fXLocation = fXLocation + fFactor;
} //shot is going right
else {//shot is going left
fXLocation = fXLocation - fFactor;
} //shot is going left
}
最佳答案
大多数编程语言(包括 Java)中的三角函数都以弧度而不是角度来测量参数。有一个辅助函数可以进行转换,因此无论您在哪里调用 sin
或 cos
,都可以添加对 toRadians
的调用:
Math.cos(Math.toRadians(dAngle))
关于java - 在android中计算圆周围的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20857735/
我目前有一堆看起来像这样的行: txt = "Can't print the value for "+arguments[1]+" before it's set"; 我在做 $('#mydiv').
我有一个网站,我试图以移动格式显示,但在宽屏幕上显示。我确信 iframe 是要走的路。 我正在尝试将 iframe 加载到 iPhone 的图像中。你可以看到一个例子 here . 一旦你看到它,你
我正在尝试使用 Xcode 中的 Storyboard创建如下所示的 View 。 为此,我添加了一个按钮和一个带有约束的标签,但这就是我得到的结果。文本不会从复选框下方开始。实现此目的的一种方法是创
我正在与 css 斗争以将文本包装在 div 中。我应用了空格、分词但没有任何反应。 链接 http://fiduciaryconsulting.org/index.php/services/90-s
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
正如标题所说 - 如何将文本环绕在伪元素周围?请参见下面的示例: .area { position: relative; } .area:before { content: '';
每次我尝试在 CSS 中做一些看似简单的事情时,它都行不通。 我有一个包含 460x160 图像的内容 div。我想做的就是将图片放在右下角,然后用文字环绕它。 text text
每次我尝试在 CSS 中做一些看似简单的事情时,它都行不通。 我有一个包含 460x160 图像的内容 div。我想做的就是将图片放在右下角,然后用文字环绕它。 text text
我有一个流式布局,它已经为我工作了一段时间。我漂浮 不是右就是左。一个 div 通常会有一个图像和一个标题。 文本项正确地环绕在 float 周围。但是某些元素没有: 将做以下两件事之一:他们要么侵入
这是我的问题。我在另一个 div 中有内联 block div。 .timeEvents { width: 100%; overflow: hidden; text-align: cent
使用float,我可以让文本环绕figure标签中的图像,而不是环绕figcaption标签,因为出色地。将 float 添加到 figcaption 不会这样做。有什么建议吗? 下面的代码在这里:h
如何让 div 2 环绕 div 1 ? (两个 div 都包含文本) +---++------------------+ | || | | 1 ||
我有一个场景,我需要转换一个可以被 *this 链接的函数返回 std::optional>而不是 T& (原因超出了这个问题的范围)。我使用 std::reference_wrapper 的原因是因
我想我彻底搜索了这个网站,但找不到我的问题的答案;我也认为这很简单,但是经过几个小时的困惑之后,我已经放弃并决定寻求帮助...... 这是我的问题;我有一个 DIV,里面有两个 DIV;第一个 DIV
我有一个文本区域字段,其右上角有一个 div 框。我进行了广泛的搜索,但找不到一种方法可以让输入文本区域的文本环绕 div。 #wrapper { position: relative; wi
所以我在使用 FancyBox 时遇到了这个问题,当滚动页面主体(主页)时,框会随机向左和顶部移动位置。 附上 GIF 演示问题: 据我所知,我正在使用 Fancybox v2。 网址是here (在
我的 coinslider 周围有一个容器 div。我想围绕这个容器 div 包装文本。如何实现这一目标? 现在我的 HTML 设置如下: 我的 CSS 是这样设置的: #mycontain
每次我尝试在 CSS 中做一些看似简单的事情时,它都行不通。 我有一个包含 460x160 图像的内容 div。我想做的就是将图片放在右下角,然后用文字环绕它。 text text
我有一个名为“content”的 DIV,其中我有一个图像作为边框/框架,我想绕过它。我都有一个大的整个框架(左、右、上、下),它与它应该的宽度相匹配,而且我把它切碎了,所以我有四个单边框图像(lef
我正在使用 fieldset 在 div 周围创建带标题的边框。 这是代码: Sproc Details:
我是一名优秀的程序员,十分优秀!