读书人

请问个小疑点

发布时间: 2012-01-14 20:02:35 作者: rapoo

请教个小问题
想做一个小游戏

就是中间有一个小人,四角会朝他发射子弹。

但不知道子弹怎么能朝小人方向?


Java code
public void add(int count,float x, float y) //x y为小人坐标    {        add(count, Left_Top,x,y);        add(count, Left_Bottom,x,y);        add(count, Right_Top, x,y);        add(count, Right_Bottom, x,y);    }        public void add(int count,int dir,float sx, float sy)    {        //Random random = new Random();        for (int i = 0; i < count; i++)        {             int x = 0,y = 0;  //子弹坐标            double v_x = 0;   //子弹速度            double v_y = 0;            double t;            switch (dir)    //判断从哪个角发出            {                    case Left_Top:                    x = 0; y = 0;                    t = sx / Math.sqrt(sx * sx + sy * sy);                    v_x = 3 * t;                    v_y = -3 * Math.sqrt(1 * t * t);                    break;                case Left_Bottom:                    x = 0; y = 480;                    sy = 480 - sy;                    t = sx / Math.sqrt(sx * sx + sy * sy);                    v_x = 3 * t;                    v_y = 3 * Math.sqrt(1 * t * t);                    break;                case Right_Top:                    x = 320; y = 0;                    sx = 320 - sx;                    t = sx / Math.sqrt(sx * sx + sy * sy);                    v_x = -3 * t;                    v_y = -3 * Math.sqrt(1 * t * t);                    break;                case Right_Bottom:                    x = 320; y = 480;                    sy = 480 - sy;                    sx = 320 - sx;                    t = sx / Math.sqrt(sx * sx + sy * sy);                    v_x = -3 * t;                    v_y = 3 * Math.sqrt(1 * t * t);                    break;                default:                    break;            }            Particle particle = new Particle(v_y, v_x, x, y);            particleSet.add(particle);        }    }

这样写貌似不对

跪求正解,谢谢

[解决办法]
|----->x
|
|y
V

以上为坐标系定义.
长方形坐标 "左上角(x0,y0)","右上角(x1,y1)","左下角(x2,y2)","右下角(x3,y3)" 宽w = x1-x0,高h=y2-y0;
人坐标x,y.
子弹速度v,横向分解速度vx,纵向分解速度vy.
子弹需要t时间可以击中人.则vt * vt = w*w + h*h. 求出t.

从左上角一发字段直线飞行人,求任意时刻tx子弹位置cx,xy.
则cx = x0 + t*vx;
cy = y0+ t*vy.





[解决办法]
ding!

读书人网 >J2SE开发

热点推荐