예제 #1
0
파일: dragon.cpp 프로젝트: LeeJiu/portfolio
void dragon::update()
{
	aware();

	if(_isAware)
		attack();

	for (int i = 0; i < 3; ++i)
	{
		_bubbles[i].update();
	}

	collision();

	deadMotion();

	setImage();
}
예제 #2
0
void Enemy::update(btDiscreteDynamicsWorld* dynamicsWorld, vec3* playerPosition, const string playerState, bool &isPlayerDead)
{

	rigidBody->activate(true);
	if (isDead == true)
	{
		if (death_anim_frames_count == 0)
		{
			rigidBody->activate(false);
			model->setAnimation(death);
		}
		death_anim_frames_count++;
	}
	else if (state == State::WALKING)
	{
		walking(dynamicsWorld, playerPosition, playerState);
	}
	else if (state == State::AGGRESSIVE)
	{
		aggressive(dynamicsWorld, playerPosition, isPlayerDead);
	}
	else if (state == State::AWARE)
	{
		aware(dynamicsWorld, playerPosition, playerState);
	}

	angle = -(atan2(direction.z, direction.x) * 180 / 3.14f);

	/*Wyciagniecie pozycji rigidbody z macierzy*/
	btScalar openGlMatrix[16];
	rigidBody->getWorldTransform().getOpenGLMatrix(openGlMatrix);
	position.x = openGlMatrix[12];
	position.y = openGlMatrix[13];
	position.z = openGlMatrix[14];
	
	float poprawka_wysokosci = -1.4f;
	model->updatePositon(position.x, position.y + poprawka_wysokosci, position.z);
	model->updateRotation(angle);
	rigidBody->setWorldTransform(btTransform(btQuaternion(btScalar(degreesToRadians(angle)), btScalar(0), btScalar(0)), btVector3(position.x, position.y, position.z)));
}