(2011-05-12 旧博文搬家)BOX2D_坦克大战

初学BOX2D,做了一个简单小游戏 像以前玩的疯狂坦克 键盘控制 改变力度和角度射击 吧所有砖头炸出灰色区域就赢了


BOX2D的2.1版加入了爆炸效果,但是2.02版没有,所以我用的方法是以爆炸点为中心建立一个AABB区域,获得处于这个区域内的缸体,

根据中心点到这些缸体的向量决定赋予其i受力的大小和方向。

 

function BombAtArea(areaCenter:b2Vec2):void {

    var aabb:b2AABB=new b2AABB  ;
    aabb.lowerBound.Set(areaCenter.x-5,areaCenter.y-5);
    aabb.upperBound.Set(areaCenter.x+5,areaCenter.y+5);   //建立一个以爆炸点为中心的区域
    var k_maxCount:int=16;   

    var shapes:Array=new Array  ;//用来保存检测到的刚体的数组
    var count:int=myWorld.Query(aabb,shapes,k_maxCount);
    var body:b2Body=null;
    var powerInX:Number;
    var powerInY:Number;
    var line:Number;
    for (var i:int=0; i<count; ++i) {        // 遍历刚体
        if (shapes[i].GetBody().IsStatic()==false&&shapes[i].GetBody()!=cannonBomb) {  //该刚体不能是静态的或者炮弹本身
      var tShape:b2Shape=shapes[i] as b2Shape;
      body=tShape.GetBody();


      line=(cannonBomb.GetLocalPoint(body.GetWorldCenter()).x*cannonBomb.GetLocalPoint(body.GetWorldCenter()).x+cannonBomb.GetLocalPoint(body.GetWorldCenter()).y*cannonBomb.GetLocalPoint(body.GetWorldCenter()).y);
      line=Math.sqrt(line);

//用勾股定理求出从中心到刚体中心的距离
      powerInX=(cannonBomb.GetLocalPoint(body.GetWorldCenter()).x)*(7.5-line)/line;   //设置X Y方向的施力,最大值7.5牛
      powerInY=(cannonBomb.GetLocalPoint(body.GetWorldCenter()).y)*(7.5-line)/line;
      body.ApplyForce(new b2Vec2(powerInX* 0.5,powerInY* 0.5 ),new b2Vec2(0,0));
      //trace(body);
     } //end if
    }//end for

   }//end function BombAtArea

 

但是我这个区域由于是b2AABB,一个矩形的区域,但是实际爆炸影响的范围应该是圆形,模拟效果可能会受到影响本来应该受力的刚体没

有检测到。不知道有什么好方法可以建立一个圆形或者接近圆形的正多边形区域?


Spring Security 是一个强大的安全框架,可以用于保护 Spring 应用程序中的资源。OAuth 是一种授权机制,可以用于保护 Web 应用程序中的资源。本文将介绍 Spring Security 和 OAuth 的相关知识和技术,以及如何在应用程序中使用它们。 一、Spring Security 1.1 Spring Security 简介 Spring Security 是一个强大的安全框架,可以用于保护 Spring 应用程序中的资源。Spring Security 提供了多种安全特性,如认证、授权、加密等。通过使用 Spring Security,我们可以轻松地保护应用程序中的资源,如 URL、方法、服务等。 1.2 Spring Security 特性 Spring Security 提供了多种安全特性,如认证、授权、加密等。以下是 Spring Security 的一些主要特性。 (1)认证:通过认证机制,可以验证用户是否具有访问资源的权限。Spring Security 提供了多种认证方式,如表单认证、HTTP 基本认证、LDAP 认证等。 (2)授权:通过授权机制,可以限制用户对资源的访问权限。Spring Security 提供了多种授权方式,如基于角色的授权、基于权限的授权等。 (3)加密:通过加密机制,可以保护用户的敏感信息。Spring Security 提供了多种加密方式,如 MD5、SHA、BCrypt 等。 (4)会话管理:通过会话管理机制,可以管理用户的会话信息,如会话超时时间、会话 ID 等。 (5)注解支持:通过注解机制,可以在代码中使用注解来控制资源的访问权限。 1.3 Spring Security 实现原理 Spring Security 的实现原理主要是通过过滤器链来实现的。当请求到达应用程序时,Spring Security 会拦截请求,并根据配置的过滤器链来判断请求是否合法。如果请求合法,则允许请求通过,否则拒绝请求。 二、OAuth 2.1 OAuth 简介 OAuth 是一种授权机制,可以用于保护 Web 应用程序中的资源。OAuth 主要用于授权第三方应用程序访问用户的资源。例如,当我们使用第三方登录时,需要使用 OAuth 机制来保护用户的隐私信息。 2.2 OAuth 2.0 OAuth 2.0 是 OAuth 的一个升级版本,主要用于 Web 应用程序中的资源保护。OAuth 2.0 相比于 OAuth 1.0,有以下几个改进。 (1)简化了流程:OAuth 2.0 简化了授权流程,使得开发者可以更容易地实现 OAuth 机制。 (2)支持多种认证方式:OAuth 2.0 支持多种认证方式,如授权码模式、密码模式、客户端模式等。 (3)支持多种授权方式:OAuth 2.0 支持多种授权方式,如基于角色的授权、基于权限的授权等。 2.3 OAuth 2.0 实现原理 OAuth 2.0 的实现原理主要是通过授权服务器和资源服务器来实现的。当第三方应用程序请求访问用户的资源时,需要经过授权服务器的认证和授权,然后才能访问用户的资源。授权服务器的认证和授权主要是通过 OAuth 2.0 的认证和授权流程来实现的。 三、Spring Security 和 OAuth 的整合 3.1 Spring Security OAuth Spring Security OAuth 是 Spring Security 的一个扩展,可以用于实现 OAuth 2.0 授权机制。Spring Security OAuth 提供了多种认证方式和授权方式,可以轻松地实现 OAuth 2.0 授权机制。 3.2 Spring Security 和 OAuth 的整合 Spring Security 和 OAuth 的整合可以使用 Spring Security OAuth 来实现。以下是 Spring Security 和 OAuth 的整合步骤。 (1)引入 Spring Security OAuth 依赖。 (2)配置 OAuth 2.0 客户端信息。 (3)配置 Spring Security OAuth 2.0 认证服务器。 (4)配置 Spring Security OAuth 2.0 资源服务器。 (5)在应用程序中使用 OAuth 2.0 认证机制。 四、案例及开源链接 以下是一个基于 Spring Security 和 OAuth 的案例及其开源链接。 4.1 Spring Security 和 OAuth2.0 实现基于 Github 的第三方登录 该案例基于 Spring Security 和 OAuth2.0 实现了基于 Github 的第三方登录。用户可以使用 Github 账号登录应用程序,而无需再次进行注册。开源链接:https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/oauth2-github 五、总结 本文介绍了 Spring Security 和 OAuth 的相关知识和技术,以及如何在应用程序中使用它们。通过使用 Spring Security 和 OAuth,我们可以轻松地保护应用程序中的资源,保护用户的隐私信息。在实际开发中,我们应该根据具体情况选择合适的认证方式和授权方式,以保证应用程序的安全性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值