void enemyattack2( )
{
int timeam[2]= {1500,500};
if (timea[1]<=0)
{
char *enemybullet2 = dMakeSpriteName("enemybullet2",p);
p++;
float fMouseX=dGetSpritePositionX("me");
float fMouseY=dGetSpritePositionY("me");
float speedX;
float speedY;
dCloneSprite("b3",enemybullet2);
float tmpX=dGetSpritePositionX("enemy2");
float tmpY=dGetSpritePositionY("enemy2");
speedX=(fMouseX-tmpX)/sqrt((fMouseX-tmpX)*(fMouseX-tmpX)+(fMouseY-tmpY)*(fMouseY-tmpY));
speedY=(fMouseY-tmpY)/sqrt((fMouseX-tmpX)*(fMouseX-tmpX)+(fMouseY-tmpY)*(fMouseY-tmpY));
dSetSpritePosition(enemybullet2,tmpX,tmpY);
dSetSpriteLinearVelocity(enemybullet2,15*speedX,15*speedY);
timea[1]=timeam[1];
}
else
{
timea[1]--;
}
if(timea[0]<=0)
{
for(int j=0; j<8; j++)
{
char *enemybullet2 = dMakeSpriteName("enemybullet2di1",j);
float speedX;
float speedY;
dCloneSprite("dici",enemybullet2);
dSetSpritePosition(enemybullet2,0,0);
}
dSetSpriteLinearVelocity("enemybullet2di10",14,14);
dSetSpriteLinearVelocity("enemybullet2di11",14,-14);
dSetSpriteLinearVelocity("enemybullet2di12",-14,14);
dSetSpriteLinearVelocity("enemybullet2di13",-14,-14);
dSetSpriteLinearVelocity("enemybullet2di14",20,0);
dSetSpriteLinearVelocity("enemybullet2di15",-20,0);
dSetSpriteLinearVelocity("enemybullet2di16",0,20);
dSetSpriteLinearVelocity("enemybullet2di17",0,-20);
timea[0]=timeam[0];
}
else
{
timea[0]--;
}
}
能不能来个好人讲讲这串代码的意思呀,最好能着重讲一下timeam和timea的意思
void enemyattack2()
{
int timeam[2] = { 1500,500 }; // timeam是一个包含两个元素的整型数组,存储了时间间隔的数值(1500和500)
if (timea[1] <= 0) // 如果timea数组的第二个元素小于等于0
{
char* enemybullet2 = dMakeSpriteName("enemybullet2", p); // 创建一个名为enemybullet2的敌人子弹精灵
p++; // p自增
float fMouseX = dGetSpritePositionX("me"); // 获取名为"me"的精灵的X坐标
float fMouseY = dGetSpritePositionY("me"); // 获取名为"me"的精灵的Y坐标
float speedX;
float speedY;
dCloneSprite("b3", enemybullet2); // 通过克隆精灵b3来创建enemybullet2精灵
float tmpX = dGetSpritePositionX("enemy2"); // 获取名为"enemy2"的敌人精灵的X坐标
float tmpY = dGetSpritePositionY("enemy2"); // 获取名为"enemy2"的敌人精灵的Y坐标
speedX = (fMouseX - tmpX) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的X轴速度
speedY = (fMouseY - tmpY) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的Y轴速度
dSetSpritePosition(enemybullet2, tmpX, tmpY); // 设置敌人子弹的位置为enemy2敌人精灵的位置
dSetSpriteLinearVelocity(enemybullet2, 15 * speedX, 15 * speedY); // 设置敌人子弹的线性速度
timea[1] = timeam[1]; // 将timea数组的第二个元素设置为timeam数组的第二个元素
}
else
{
timea[1]--; // 否则,将timea数组的第二个元素减1
}
if (timea[0] <= 0) // 如果timea数组的第一个元素小于等于0
{
for (int j = 0; j < 8; j++) // 循环8次
{
char* enemybullet2 = dMakeSpriteName("enemybullet2di1", j); // 创建名为enemybullet2di1的敌人子弹精灵
float speedX;
float speedY;
dCloneSprite("dici", enemybullet2); // 通过克隆精灵dici来创建enemybullet2di1精灵
dSetSpritePosition(enemybullet2, 0, 0); // 设置敌人子弹的位置为(0,0)
}
dSetSpriteLinearVelocity("enemybullet2di10", 14, 14); // 设置敌人子弹精灵的线性速度
// 设置其他敌人子弹精灵的线性速度(类似上一行的代码)
timea[0] = timeam[0]; // 将timea数组的第一个元素设置为timeam数组的第一个元素
}
else
{
timea[0]--; // 否则,将timea数组的第一个元素减1
}
}
/*
timeam数组存储了两个时间间隔的数值,分别对应不同的攻击行为。每当一个攻击行为执行完毕后,相应的时间间隔会被重置,并在下一次攻击时重新倒计时。
*/
/*
timea数组用于记录每个攻击行为的剩余时间。当timea数组的元素小于等于0时,表示对应的攻击行为可以执行。执行完毕后,重新设置timea数组的值。否则,将对应的时间间隔元素减1。
*/
void enemyattack2()
{
int timeam[2] = { 1500,500 }; // timeam是一个包含两个元素的整型数组,存储了时间间隔的数值(1500和500)
if (timea[1] <= 0) // 如果timea数组的第二个元素小于等于0
{
char* enemybullet2 = dMakeSpriteName("enemybullet2", p); // 创建一个名为enemybullet2的敌人子弹精灵
p++; // p自增
float fMouseX = dGetSpritePositionX("me"); // 获取名为"me"的精灵的X坐标
float fMouseY = dGetSpritePositionY("me"); // 获取名为"me"的精灵的Y坐标
float speedX;
float speedY;
dCloneSprite("b3", enemybullet2); // 通过克隆精灵b3来创建enemybullet2精灵
float tmpX = dGetSpritePositionX("enemy2"); // 获取名为"enemy2"的敌人精灵的X坐标
float tmpY = dGetSpritePositionY("enemy2"); // 获取名为"enemy2"的敌人精灵的Y坐标
speedX = (fMouseX - tmpX) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的X轴速度
speedY = (fMouseY - tmpY) / sqrt((fMouseX - tmpX) * (fMouseX - tmpX) + (fMouseY - tmpY) * (fMouseY - tmpY)); // 计算敌人子弹的Y轴速度
dSetSpritePosition(enemybullet2, tmpX, tmpY); // 设置敌人子弹的位置为enemy2敌人精灵的位置
dSetSpriteLinearVelocity(enemybullet2, 15 * speedX, 15 * speedY); // 设置敌人子弹的线性速度
timea[1] = timeam[1]; // 将timea数组的第二个元素设置为timeam数组的第二个元素
}
else
{
timea[1]--; // 否则,将timea数组的第二个元素减1
}
if (timea[0] <= 0) // 如果timea数组的第一个元素小于等于0
{
for (int j = 0; j < 8; j++) // 循环8次
{
char* enemybullet2 = dMakeSpriteName("enemybullet2di1", j); // 创建名为enemybullet2di1的敌人子弹精灵
float speedX;
float speedY;
dCloneSprite("dici", enemybullet2); // 通过克隆精灵dici来创建enemybullet2di1精灵
dSetSpritePosition(enemybullet2, 0, 0); // 设置敌人子弹的位置为(0,0)
}
dSetSpriteLinearVelocity("enemybullet2di10", 14, 14); // 设置敌人子弹精灵的线性速度
// 设置其他敌人子弹精灵的线性速度(类似上一行的代码)
timea[0] = timeam[0]; // 将timea数组的第一个元素设置为timeam数组的第一个元素
}
else
{
timea[0]--; // 否则,将timea数组的第一个元素减1
}
}
/*
timeam数组存储了两个时间间隔的数值,分别对应不同的攻击行为。每当一个攻击行为执行完毕后,相应的时间间隔会被重置,并在下一次攻击时重新倒计时。
*/
/*
timea数组用于记录每个攻击行为的剩余时间。当timea数组的元素小于等于0时,表示对应的攻击行为可以执行。执行完毕后,重新设置timea数组的值。否则,将对应的时间间隔元素减1。
*/