Exemplo n.º 1
0
        private bool FireBullet(GameStatus gameStatus)
        {
            if (bulletTarget.Length > 0)
            {
                double v0 = bulletSpeed;
                double g = 9.8;

                double sin = Math.Sin(firingAngle), cos = Math.Cos(firingAngle);

                DebugWindow.Update("12:FANG", (firingAngle * 180 / Math.PI).ToString("F02"));

                bullet = new Bullet();
                bullet.Horizontal.Acceleration = 0;
                bullet.Horizontal.Velocity = cos * v0;
                bullet.Horizontal.Position = 0.05;
                bullet.Vertical.Acceleration = -g;
                bullet.Vertical.Velocity = sin * v0;
                bullet.Vertical.Position = 0;

                /*
                Console.WriteLine(string.Format("bullet allocated, Vertical a={0:F2} v={1:F2} p={2:F2}",
                    bullet.Vertical.Acceleration, bullet.Vertical.Velocity, bullet.Vertical.Position));
                 * */

                bulletAzimuth = bulletTarget.Azimuth;

                //Console.WriteLine(string.Format("{0:F2},{1:F2}", angles[0] * 180 / Math.PI, angles[1] * 180 / Math.PI));

                DX.StopSoundMem(turretMoveSound);
                DX.PlaySoundMem(fireSound, DX.DX_PLAYTYPE_BACK);
            }

            return true;
        }
Exemplo n.º 2
0
        private void DrawBullet(bool hit)
        {
            if (bullet != null && bullet.Horizontal.Position > 0)
            {
                float focalLength = Sensor.KinectSensor.DepthStream.NominalFocalLengthInPixels;

                //double projYPos = bullet.Vertical.Position / bullet.Horizontal.Position * focalLength;
                //double projXPos = Math.Tan(bulletAzimuth) * sensor.KinectSensor.DepthStream.NominalFocalLengthInPixels;

                double rHorizon = bullet.Horizontal.Position;
                double projYPos = focalLength * Math.Tan(Math.Atan2(bullet.Vertical.Position, bullet.Horizontal.Position) - Sensor.KinectSensor.ElevationAngle / 180.0 * Math.PI);
                double projXPos = rHorizon * Math.Sin(bulletAzimuth) * focalLength / (rHorizon * Math.Cos(bulletAzimuth) + 0.05);

                DebugWindow.Update("13:PROJX", projXPos.ToString("F2"));

                double r = Math.Sqrt(Math.Pow(bullet.Vertical.Position, 2) + Math.Pow(bullet.Horizontal.Position, 2));

                int drawYPos = (int)(GameSettings.WindowHeight / 2 - projYPos);
                int drawXPos = (int)(GameSettings.WindowWidth / 2 + projXPos);

                //Console.WriteLine(string.Format("projXPos={0:F2}, projYPos={1:F2}", projXPos, projYPos));

                double drawScale = focalLength / bullet.Horizontal.Position;
                if (hit)
                {
                    int width2 = (int)(0.1 * drawScale / 2);
                    dokuroX = drawXPos;
                    dokuroY = drawYPos;
                    dokuroWidth2 = width2;

                    bullet = null;
                    bulletHit = false;
                }
                else
                {
                    DX.DrawCircle(drawXPos, drawYPos, (int)(0.02 * drawScale), DX.GetColor(255, 0, 0), DX.TRUE);
                }
            }
        }