Example #1
0
void Character::Draw(){
	MV1DrawModel( graph );
	MV1SetPosition( graph, VGet(x, y + 1, z ) ) ;
	MV1SetPosition( targetwindow, VGet( x +  -10 * tan(RotateZ * PI/   180), (y + 10 * tan(RotateX * PI/ 180)), z + 10));
	MV1SetRotationXYZ( graph, VGet( -RotateX * DX_PI_F / 180.0f, (RotateY +180) * DX_PI_F / 180.0f, (RotateZ+ RotateZ2 + 180) * DX_PI_F / 180.0f ));
	MV1SetOpacityRate(graph, !(damaged_timer % 2));
	if(life >= 0){
		//MV1DrawModel( targetwindow );
		MV1DrawModel( boost.graph );
		MV1DrawModel( boost2.graph );
	}
	//ブースト関連
	boost.playtime += 1.0f;
	if( boost.playtime >= boost.totaltime ) boost.playtime = 0.0f;
	MV1SetAttachAnimTime( boost.graph, boost.attach, boost.playtime );
	MV1SetPosition( boost.graph, VGet(x , y, z ));
	MV1SetRotationXYZ( boost.graph, VGet( -RotateX * DX_PI_F / 180.0f, (RotateY +180) * DX_PI_F / 180.0f, (RotateZ+ RotateZ2 + 180) * DX_PI_F / 180.0f ));

	boost2.playtime += 1.0f;
	if( boost2.playtime >= boost2.totaltime ) boost2.playtime = 0.0f;
	MV1SetAttachAnimTime( boost2.graph, boost2.attach, boost2.playtime );
	MV1SetPosition( boost2.graph, VGet( x, y, z ));
	MV1SetRotationXYZ( boost2.graph, VGet( -RotateX * DX_PI_F / 180.0f, (RotateY +180) * DX_PI_F / 180.0f, (RotateZ+ RotateZ2 + 180) * DX_PI_F / 180.0f ));

}
Example #2
0
inline void TARGET :: newTarget(){
	dflag = true;
	getRand();
	MV1SetPosition(ModelHandle, VGet(x, y, z));
	MV1SetRotationXYZ(ModelHandle, VGet(0, rotate, 0));
	MV1SetupCollInfo(ModelHandle, -1, 8, 8, 8);
}
Example #3
0
// 動きを計算する
void Room_Update( Room *self )
{
	MV1SetRotationXYZ( self->door, VGet( 0, self->rotY, 0 ) );
	MV1SetPosition(self->room, VGet( 200, 0, 300 ) );
	MV1SetPosition(self->door, VGet( 1250, 0, -540 ) );
	MV1SetPosition(self->glass, VGet( 200 + self->slide, 0, 300) );
	MV1SetPosition(self->table, VGet( 200 - 43, 0, 300 + 721) );
	MV1SetPosition(self->bed, VGet( 200 + 668, 0, 300 + 632) );
	MV1SetPosition(self->hammer, VGet( 200, 0, 300 ) );
	MV1SetPosition(self->paper0,  VGet( 200 - 1206, 275, 300 - 59 ) );
	MV1SetPosition(self->pot, VGet( 200, 0, 300 ) ); 
	MV1SetRotationXYZ( self->paper1, VGet( 0, self->role * PHI / 360, 0 ) ); 
	MV1SetPosition(self->paper1, VGet( 200 - 746, 137, 300 + 741) );
	MV1SetRotationXYZ( self->paper2, VGet( 0, self->role * PHI / 360, 0 ) ); 
	MV1SetPosition(self->paper2, VGet( 200 + 528, 22 + 141, 300 + 724) );
	MV1SetRotationXYZ( self->paper3, VGet( 0, self->role * PHI / 360, 0 ) ); 
	MV1SetPosition(self->paper3, VGet( 200 + 726, 22 + 83, 300 + 582 ) );

	//開く
	if(self->swit == 1 || self->swit == -1){ door_open(self); }
	if( self->s_swit == 1 || self->s_swit == -1 ){ slide_glass(self); }

	self->role++;

	if(self->door_close_count > 0)
	{
		if(self->door_close_count == 1){self->swit = -1;}
		self->door_close_count--;
	}



	/*
	if(Pad_Get( KEY_INPUT_W ) > 0){ self->x++; }
	else if(Pad_Get( KEY_INPUT_S ) > 0){ self->x--; }

	if(Pad_Get( KEY_INPUT_D ) > 0){ self->y++; }
	else if(Pad_Get( KEY_INPUT_A ) > 0){ self->y--; }

	if(Pad_Get( KEY_INPUT_V ) > 0){ self->z++; }
	else if(Pad_Get( KEY_INPUT_B ) > 0){ self->z--; }
	*/

	//if(Pad_Get( KEY_INPUT_Q ) == -1){printf("\n x= %d y = %d  z = %d \n",self->x,self->y, self->z);}


}		
Example #4
0
//自機の描画
void draw_Player() {
	substance *sub = player.getSub();
	if (sub[0].flag == true) {
		MV1SetPosition(sub[0].MHandle, VGet(sub[0].x, sub[0].y, sub[0].z));
		MV1SetRotationXYZ(sub[0].MHandle, VGet(0.0f, sub[0].angy * DX_PI_F / 180.0f, 0.0f));
		MV1DrawModel(sub[0].MHandle);
	}
}
Example #5
0
void BaseObject::MoveManager::setObjectDirection(int model, int dir){
	//Z軸の負の向きが始線。回転角は時計回り
	switch(dir){
	case NORTH:
		MV1SetRotationXYZ(model, VGet(0.0f, DX_PI_F/2, 0.0f));
		break;
	case SOUTH:
		MV1SetRotationXYZ(model, VGet(0.0f, -DX_PI_F/2, 0.0f));
		break;
	case WEST:
		MV1SetRotationXYZ(model, VGet(0.0f, 0.0f, 0.0f));
		break;
	case EAST:
		MV1SetRotationXYZ(model, VGet(0.0f, DX_PI_F, 0.0f));
		break;
	}

	current_dir = dir;
}
Example #6
0
//敵の描画
void draw_Enemy() {
	substance *sub = enemy.getSub();
	for (int i = 0; i < enemy.getSize(); i++) {
		if (sub[i].flag == true) {
			MV1SetPosition(sub[i].MHandle, VGet(sub[i].x, sub[i].y, sub[i].z));
			MV1SetRotationXYZ(sub[i].MHandle,VGet(0.0f, sub[i].angy * DX_PI_F / 180.0f, 0.0f));
			MV1DrawModel(sub[i].MHandle);
		}
	}
}
// キャラクターの向きを変える処理
void Chara_AngleProcess( CHARA *ch )
{
	float TargetAngle ;			// 目標角度
	float SaAngle ;				// 目標角度と現在の角度との差

	// 目標の方向ベクトルから角度値を算出する
	TargetAngle = atan2( ch->TargetMoveDirection.x, ch->TargetMoveDirection.z ) ;

	// 目標の角度と現在の角度との差を割り出す
	{
		// 最初は単純に引き算
		SaAngle = TargetAngle - ch->Angle ;

		// ある方向からある方向の差が180度以上になることは無いので
		// 差の値が180度以上になっていたら修正する
		if( SaAngle < -DX_PI_F )
		{
			SaAngle += DX_TWO_PI_F ;
		}
		else
		if( SaAngle > DX_PI_F )
		{
			SaAngle -= DX_TWO_PI_F ;
		}
	}

	// 角度の差が0に近づける
	if( SaAngle > 0.0f )
	{
		// 差がプラスの場合は引く
		SaAngle -= CHARA_ANGLE_SPEED ;
		if( SaAngle < 0.0f )
		{
			SaAngle = 0.0f ;
		}
	}
	else
	{
		// 差がマイナスの場合は足す
		SaAngle += CHARA_ANGLE_SPEED ;
		if( SaAngle > 0.0f )
		{
			SaAngle = 0.0f ;
		}
	}

	// モデルの角度を更新
	ch->Angle = TargetAngle - SaAngle ;
	MV1SetRotationXYZ( ch->ModelHandle, VGet( 0.0f, ch->Angle + DX_PI_F, 0.0f ) ) ;
}
Example #8
0
void Character::Shot(){
	static unsigned int pad_timer = 0;
	if(KeyGet(KEY_INPUT_U)) power = 2;
	if (input & PAD_INPUT_1) {
		pad_timer++;
	}
	else{
		pad_timer = 0;
	}
	if (KeyGet(KEY_INPUT_SPACE) % 5 == 1 || pad_timer % 5 == 1  && muteki == 0){
		PlaySoundMem( shotsound , DX_PLAYTYPE_BACK ) ;

		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 1;
				shot[i].x = x;
				shot[i].y = y;
				shot[i].z = z;
				shot[i].angleX = RotateX;
				shot[i].angleY = RotateY;
				shot[i].angleZ = RotateZ;
				shot[i].playtime =0.0f;
				float sbx =  1 * tan((RotateZ * PI/ 180));
				float sb =  ((sbx * sbx) + 1 * 1);
				float sby = sb * tan((RotateX * PI/ 180));
				shot[i].rx = sbx / sb * 10.0f;
				shot[i].rz = 1 / sb * 10.0f;
				shot[i].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i].graph, VGet(( shot[i].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				break;
				
			}
			
		}

	}
	if(KeyGet(KEY_INPUT_SPACE) % 5 == 1 && power == 1 ){
		PlaySoundMem( shotsound , DX_PLAYTYPE_BACK ) ;
		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 1;
				shot[i].x = x - 2;
				shot[i].y = y;
				shot[i].z = z;
				shot[i + 1].flag = 1;
				shot[i + 1].x = x + 2;
				shot[i + 1].y = y;
				shot[i + 1].z = z;
				shot[i].angleX = RotateX;
				shot[i].angleY = RotateY;
				shot[i].angleZ = RotateZ;
				shot[i].playtime =0.0f;
				shot[i + 1].angleX = RotateX;
				shot[i + 1].angleY = RotateY;
				shot[i + 1].angleZ = RotateZ;
				shot[i + 1].playtime =0.0f;
				float sbx =  1 * tan((RotateZ * PI/ 180));
				float sb =  ((sbx * sbx) + 1 * 1);
				float sby = sb * tan((RotateX * PI/ 180));
				shot[i].rx = sbx / sb * 10.0f;
				shot[i].rz = 1 / sb * 10.0f;
				shot[i].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i].graph, VGet(( shot[i].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				shot[i + 1].rx = sbx / sb * 10.0f;
				shot[i + 1].rz = 1 / sb * 10.0f;
				shot[i + 1].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i + 1].graph, VGet(( shot[i + 1].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i + 1].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				break;
				
			}
			
		}

	}
	if(KeyGet(KEY_INPUT_SPACE) % 5 == 1 && power >= 2 ){
		PlaySoundMem( shotsound , DX_PLAYTYPE_BACK ) ;
		for(int i = 0; i < SNUM; i++){
			if(shot[i].flag == 0){
				shot[i].flag = 1;
				shot[i].x = x;
				shot[i].y = y;
				shot[i].z = z;
				shot[i].angleX = RotateX;
				shot[i].angleY = RotateY;
				shot[i].angleZ = RotateZ;
				shot[i].playtime =0.0f;

				shot[i + 1].flag = 1;
				shot[i + 1].x = x + 4;
				shot[i + 1].y = y;
				shot[i + 1].z = z;
				shot[i + 1].angleX = RotateX;
				shot[i + 1].angleY = RotateY;
				shot[i + 1].angleZ = RotateZ;
				shot[i + 1].playtime =0.0f;

				shot[i + 2].flag = 1;
				shot[i + 2].x = x - 4;
				shot[i + 2].y = y;
				shot[i + 2].z = z;
				shot[i + 2].angleX = RotateX;
				shot[i + 2].angleY = RotateY;
				shot[i + 2].angleZ = RotateZ;
				shot[i + 2].playtime =0.0f;

				float sbx =  1 * tan((RotateZ * PI/ 180));
				float sb =  ((sbx * sbx) + 1 * 1);
				float sby = sb * tan((RotateX * PI/ 180));
				shot[i].rx = sbx / sb * 10.0f;
				shot[i].rz = 1 / sb * 10.0f;
				shot[i].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i].graph, VGet(( shot[i].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));

				shot[i + 1].rx = sbx / sb * 10.0f;
				shot[i + 1].rz = 1 / sb * 10.0f;
				shot[i + 1].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i + 1].graph, VGet(( shot[i + 1].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i + 1].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));

				shot[i + 2].rx = sbx / sb * 10.0f;
				shot[i + 2].rz = 1 / sb * 10.0f;
				shot[i + 2].ry = sby / sqrt(sb * sb + sby * sby) * 8.0f;
				MV1SetRotationXYZ( shot[i + 2].graph, VGet(( shot[i + 2].angleX / 1.5)* DX_PI_F / 180.0f, ((shot[i + 2].angleZ  + 180 ) * -1) * DX_PI_F / 180.0f, 0 * DX_PI_F / 180.0f ));
				break;
				
			}
			
		}

	}

	for(int i = 0; i < SNUM; i++){
		if(shot[i].flag == 1){
			shot[i].z += shot[i].rz;
			shot[i].x -= shot[i].rx;
			shot[i].y += shot[i].ry;
			MV1SetPosition( shot[i].graph, VGet(shot[i].x, shot[i].y, shot[i].z) );
			MV1DrawModel( shot[i].graph );
			
			MV1SetAttachAnimTime( shot[i].graph, shot[i].attach, shot[i].playtime ) ;
			
			shot[i].playtime += 2.0f;
			
			if(shot[i].playtime >= shot[i].shottime ) shot[i].playtime = 0;
			
			if(shot[i].z > z + 300.0f){
				shot[i].flag = 0;
				shot[i].playtime = 0.0f;
			}
		}
		if(shot[i].flag == 2){
			shot[i].x -= shot[i].rx;
			shot[i].y -= shot[i].ry;
			shot[i].z -= shot[i].rz;
			
			MV1SetScale(shot[i].graph, VGet(0.05f, 0.05f, 0.005f));
			MV1SetPosition( shot[i].graph, VGet(shot[i].x, shot[i].y, shot[i].z) );
			MV1DrawModel( shot[i].graph );
			
			if(shot[i].z > 100){
				shot[i].flag = 0;
			}
		}
	}

}