android 3D 游戏实现之简单碰撞检测

先还是大体说一下这个程序的原理吧(正方体与球体之间)。

 

(1)建立相关对象:正方体,3个球体以及为它们铺上纹理

(2)分别为每个对象设定碰撞模式,方法为setCollisionMode(int mode),3个球体为COLLISION_CHECK_OTHERS,cube为COLLISION_CHECK_SELF

(3)将其添加到world对象中,及处理必要的Camera参数

(4)在onDrawFrame函数中进行碰撞处理工作,因为是球体与正方体之间的碰撞,所以采用了相近的椭圆碰撞检测checkForCollisionEllipsoid(如果要用球体检测checkForCollisionSpherical,也能很好工作,这在代码处有相应注释)

 

下面附上源代码

 

(1)Activity类

package sim.feel;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLSurfaceView;
import android.os.Bundle;

/**
 * Activity类
 * 
 * @author Administrator
 * 
 */
public class Basic_collision extends Activity {
 private GLSurfaceView glView;
 private MyRenderer mr = new MyRenderer();

 // onCreate
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // 传入Resources方法
  LoadBitmap.loadb(getResources());
  glView = new GLSurfaceView(this);
  glView.setRenderer(mr);
  setContentView(glView);
 }
}

// 载入位图文件
class LoadBitmap {
 public static Bitmap bitmap;

 // 载入位图方法
 public static void loadb(Resources res) {
  bitmap = BitmapFactory.decodeResource(res, R.drawable.icon);
 }
}

 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值