首页 > 学院 > 开发设计 > 正文

关于手机游戏中的炮弹轨迹—抛物线

2019-11-17 05:57:37
字体:
来源:转载
供稿:网友
关于手机游戏中的炮弹轨迹——抛物线
  在手机游戏的开发中经常会根据一条抛物线来模拟炮弹的轨迹。在已知炮弹的发射点,射程和射击高度的情况下,完全可由
抛物线方程来模拟出炮弹的运行轨迹,当然,这里的模拟只是理想状态下的,并没有把风力等因素考虑进去。
  根据炮弹的发射点(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);


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表