gpt4 book ai didi

c - 动画无法可靠工作(Damakufu 0.12m)

转载 作者:行者123 更新时间:2023-11-30 17:26:01 26 4
gpt4 key购买 nike

我已经遇到这个问题大约一周了,没有人能够帮助我解决这个问题(甚至在具有实际 Danmakufu 故障排除线程和所有内容的论坛上也没有......)。因此,Boss 的动画无法可靠地工作。有时动画播放,有时不播放。我认为这与 if() 语句有关,但我不知道其中的内容。我尝试解释一些 Danmakufu 特定的内容,以便那些不熟悉它(但通常熟悉 C 类编程)的人可以提供帮助。

@DrawLoop {} - 这是脚本的重要部分,所有与 Boss 相关的绘图都位于此处。SetTexture、SetRenderState、SetAlpha、SetGraphicScale 和 SetGraphicAngle - 用于定义如何绘制 Boss 的各种绘图选项。GetSpeedX 和 GetSpeedY - 获取 Boss 的 x 和 y 速度值(可以为负)。SetGraphicRect - 定义要显示的图像区域。设置图形矩形(0, 0, 31, 31);从左上角绘制一个 32x32 的区域。GetAngle - 获取 Boss 移动的角度DrawGraphic - 绘制 BossGetX 和 GetY - 获取敌人(本例中为 Boss)的 x 和 y 坐标

如果您需要的话,这里是完整的函数列表:http://dmf.shrinemaiden.org/wiki/Functions_(0.12m)

注意:frame、frame2 和 angle 是在 @DrawLoop {} 外部定义的变量,以使它们成为全局变量。

Script

@DrawLoop {

  SetTexture(Boss);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicScale(1.5, 1.5);
SetGraphicAngle(0, 0, 0);

if(int(GetSpeedX())==0 && int(GetSpeedY())==0) {
if(frame<15){ SetGraphicRect(0, 0, 31, 31); }
if(frame>=15){ SetGraphicRect(32, 0, 64, 31); }
frame++;
frame2 = 0;
}

if(angle>=315 && angle<=359) {
if(frame2<5){ SetGraphicRect(0, 96, 31, 128); }
if(frame2>5 && frame2<10){ SetGraphicRect(32, 96, 63, 128); }
if(frame2>10 && frame2<15){ SetGraphicRect(64, 96, 95, 128); }
if(frame2>15){ SetGraphicRect(32, 96, 63, 128); }
frame = 0;
frame2++;
}

if(angle>=0 && angle<=44) {
if(frame2<5){ SetGraphicRect(0, 96, 31, 128); }
if(frame2>5 && frame2<10){ SetGraphicRect(32, 96, 63, 128); }
if(frame2>10 && frame2<15){ SetGraphicRect(64, 96, 95, 128); }
if(frame2>15){ SetGraphicRect(32, 96, 63, 128); }
frame = 0;
frame2++;
}

if(angle>=135 && angle<=224) {
if(frame2<5){ SetGraphicRect(0, 64, 31, 96); }
if(frame2>5 && frame2<10){ SetGraphicRect(32, 64, 63, 96); }
if(frame2>10 && frame2<15){ SetGraphicRect(64, 64, 95, 96); }
if(frame2>15){ SetGraphicRect(32, 64, 63, 96); }
frame = 0;
frame2++;
}

if(angle>=225 && angle<=314) {
if(frame2<5){ SetGraphicRect(64, 32, 95, 63); }
if(frame2>5 && frame2<10){ SetGraphicRect(32, 32, 63, 63); }
if(frame2>10 && frame2<15){ SetGraphicRect(0, 32, 31, 63); }
if(frame2>15){ SetGraphicRect(32, 32, 63, 63); }
frame = 0;
frame2++;
}

if(angle>=45 && angle<=134) {
if(frame2<5){ SetGraphicRect(0, 32, 31, 63); }
if(frame2>5 && frame2<10){ SetGraphicRect(32, 32, 63, 63); }
if(frame2>10 && frame2<15){ SetGraphicRect(64, 32, 95, 63); }
if(frame2>15){ SetGraphicRect(32, 32, 63, 63); }
frame = 0;
frame2++;
}

if(frame >= 30) {
frame = 0;
}

if(frame2 >= 20) {
frame2 = 0;
}

angle = GetAngle;

DrawGraphic(GetX, GetY);

}

最佳答案

这是一个老问题,但有一些事情你应该注意。首先,您没有覆盖所有角度,因此对于某些角度(例如 225),不会发生任何事情。其次,角度没有标准化。我建议使用 angle%360,以便将大于 360 的角度标准化为 0-360 范围。如果您还没有解决问题,这可能会解决问题。

关于c - 动画无法可靠工作(Damakufu 0.12m),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26915239/

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