You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
6 months ago
|
#include "enemybullet.h"
|
||
|
#include"gamewidget.h"
|
||
|
#include <QtMath>
|
||
|
|
||
|
enemyBullet::enemyBullet(EnemyBase *_owner, BulletDir _dir, int _Attack, qreal _speed,int _type)
|
||
|
{
|
||
|
mOwner = _owner;
|
||
|
mAttackPoint = _Attack;
|
||
|
//qDebug()<<mAttackPoint;
|
||
|
mSpeed = _speed;
|
||
|
type = _type;
|
||
|
|
||
|
if(type == 0)
|
||
|
{
|
||
|
this->setPixmap(QPixmap(":/icons/img/enemybulletsample.png"));
|
||
|
this->setScale(0.5);
|
||
|
}
|
||
|
else if(type == 1)
|
||
|
{
|
||
|
QPointF _Dir = GameWidget::widget->getPlayer()->getCenterPos() - mOwner->getCenterPos();
|
||
|
qreal _x = _Dir.x();
|
||
|
qreal _y = _Dir.y();
|
||
|
_x = QString::number(_x,'f',2).toDouble();
|
||
|
_y = QString::number(_y,'f',2).toDouble();
|
||
|
qreal _r = qSqrt(qPow(_x,2) + qPow(_y,2));
|
||
|
if(_r == 0) return;
|
||
|
//保留两位小数
|
||
|
_r = QString::number(_r,'f',2).toDouble();
|
||
|
qreal dx = _x/_r;
|
||
|
qreal dy = _y/_r;
|
||
|
dx = QString::number(dx,'f',2).toDouble();
|
||
|
dy = QString::number(dy,'f',2).toDouble();
|
||
|
|
||
|
moveDir = QPointF(dx,dy);
|
||
|
this->setPixmap(QPixmap(":/icons/img/bomb.png"));
|
||
|
this->setScale(0.2);
|
||
|
}
|
||
|
mPos = mOwner->getCenterPos() - QPointF(this->pixmap().width()*scale()/2,this->pixmap().height()*scale()/2);
|
||
|
this->setPos(mPos);
|
||
|
|
||
|
|
||
|
mDir = _dir;
|
||
|
}
|