请教个小问题
想做一个小游戏
就是中间有一个小人,四角会朝他发射子弹。
但不知道子弹怎么能朝小人方向?
- 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!