龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

关于手机游戏中的炮弹轨迹―抛物线[组图]

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
关于手机游戏中的炮弹轨迹――抛物线 在手机游戏的开发中经常会根据一条抛物线来模拟炮弹的轨迹。在已知炮弹的发射点,射程和射击高度的情况下,完全可由 抛物线方程来模拟出
关于手机游戏中的炮弹轨迹――抛物线
  在手机游戏的开发中经常会根据一条抛物线来模拟炮弹的轨迹。在已知炮弹的发射点,射程和射击高度的情况下,完全可由
  抛物线方程来模拟出炮弹的运行轨迹,当然,这里的模拟只是理想状态下的,并没有把风力等因素考虑进去。
  根据炮弹的发射点(x1,y1),射程(cs)和射击高度(h)可得出抛物线的三个点:
  p1:(x1,y1)
  p2:(x2,y2)    x2=x1+cs/2, y2=y1+h
  p3:(x3,y3)    x3=x1+cs,   y3=y1
  根据这三个点可列出抛物线方程
  ax1^2+bx1+c=y1
  ax2^2+bx2+c=y2
  ax3^2+bx3+c=y3
  计算方程得到该抛物线的系数a,b,c
  得到a,b,c后,即可根据a,b,c计算出抛物线每点的轨迹。
  下面的例子将说明如何绘制轨迹:
 
  例子源码及图片下载

  我的MSN是zhagy_1981@hotmail.com,欢迎指出不足之处。

  例子运行效果如下:
   

  例子canvas中的代码

  import Java.io.IOException;
  import javax.microedition.lcdui.Graphics;
  import javax.microedition.lcdui.Image;
  import javax.microedition.lcdui.game.GameCanvas;
  import javax.microedition.lcdui.game.Sprite;
  import javax.microedition.lcdui.game.TiledLayer;

public class MyCanvas extends GameCanvas implements Runnable
  {
   //小船的位置
   int x,y;
   //小船精灵
   Sprite ship;
   //地图
   TiledLayer background;
   //图片
   Image ship_IMG, sea_IMG, bullet_IMG;
   //炮弹
   Bullets bullets;
   public MyCanvas()
   {
    super(true);
    //初始化船的位置
    x = 10;
    y = 60;
    try
    {
     ship_IMG = Image.createImage("/ship.png");
     sea_IMG = Image.createImage("/sea.png");
     bullet_IMG = Image.createImage("/bullet.png");
    }
    catch (IOException e)
    {
     e.printStackTrace();
    }
    //初始化炮弹
    bullets = new Bullets(bullet_IMG);
    //初始化小船
    ship = new Sprite(ship_IMG, 24, 30);
    ship.setPosition(x, y);
    //初始化地图
    background = new TiledLayer(20, 6, sea_IMG, 32, 32);
  
  
精彩图集

赞助商链接