私は現在、3D空間における遅れて追従してくるタイプのホーミング弾の実装についてつまずいます。
いろいろと調べたり、自分なりに試行錯誤してみたのですが思うように行かず、こちらで質問させていただいた次第です。
以下ソースコードですが、注意すべきかもしれない点として、「Effekseer」をホーミング弾として用いています。
	//生成された各弾の移動処理
	for(int i=0; i<255; i++){		
		if(reimu.g_handleArray[i] != -1) {
			//ターゲットへのベクルを算出(仮目標:vec(0,25,0) - 今の座標)
			vecTarget[i] = VSub(VGet(0,25,0), VGet(reimu.g_Pos[i].x , reimu.g_Pos[i].y, reimu.g_Pos[i].z ));
			//弾の正面(進行方向)ベクトル
			vecForward[i] = VNorm(VGet(oldVector[i].x - reimu.g_Pos[i].x , oldVector[i].y - reimu.g_Pos[i].y, oldVector[i].z - reimu.g_Pos[i].z ));
			
			//ターゲットまでの角度
			float Seki = VDot(vecForward[i],vecTarget[i]);
			float Zetai = sqrt(VSquareSize(vecForward[i])) * sqrt(VSquareSize(vecTarget[i]));
			float angleDiff = acos(Seki/Zetai);
			//1秒間に回転させる角度
			float angleAdd = 60.0f * DX_PI / 180.0f;
			//回転させる度合い
			angle[i] = ( angleAdd / angleDiff );
			//進行方向ベクトルを算出
			goAngle[i] = angleDiff - angle[i];
			goVec[i] = VGet(cos(goAngle[i]), sin(goAngle[i]), tan(goAngle[i]));
			oldVector[i].x = reimu.g_Pos[i].x;
			oldVector[i].y = reimu.g_Pos[i].y;
			oldVector[i].z = reimu.g_Pos[i].z;
			//ターゲットへのベクトル直接(成功:ちゃんと目標地点に向かう)
			//reimu.g_Pos[i].x += vecTarget.x;
			//reimu.g_Pos[i].y += vecTarget.y;
			//reimu.g_Pos[i].z += vecTarget.z;
			//弾の進行方向ベクトル(成功?:その場から動かない。初速与えてないので当たり前かもしれない。)
			//reimu.g_Pos[i].x += vecForward.x;
			//reimu.g_Pos[i].y += vecForward.y;
			//reimu.g_Pos[i].z += vecForward.z;
			//追従計算後
			reimu.g_Pos[i].x += goVec[i].x;
			reimu.g_Pos[i].y += goVec[i].y;
			reimu.g_Pos[i].z += goVec[i].z;
			//座標指定
			g_manager->SetLocation( reimu.g_handleArray[i], ::Effekseer::Vector3D( reimu.g_Pos[i].x , reimu.g_Pos[i].y, reimu.g_Pos[i].z ) );
			//倍率指定
			if(reimu.Size[i] < 5.0f)reimu.Size[i] += 0.05f;
			g_manager->SetScale(reimu.g_handleArray[i],reimu.Size[i],reimu.Size[i],reimu.Size[i]);
		}
	}
よろしくお願いいたします。