2014-8-10 掉落不简单

很多人也许认为物品掉落很简单,随机从物品清单中生成几个物品后交付即可,但是对于一个正儿八经的游戏,这么做是不行的,掉落在游戏中需要归属于"物品"服务单独管理,该服务类似游戏的出纳和会计,管理所有游戏物品和金钱的进出.场景或其它服务提出掉落请求和缘由,然后由物品服务根据该请求生成对应的出库物品包,并进行相关记录,任何其它服务都没有权利直接生成游戏物品.同样,当玩家将游戏物品归还给系统时(譬如卖店),该请求实际上也会交给物品服务处理. 总之,游戏中的全部金融,物品,生产体系,都要在物品服务中处理.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 LayaAir 1.7.19 中使用 TypeScript 实现玩家在地面上不掉落,可以通过以下步骤进行操作: 1. 创建玩家对象,可以使用 Laya.Sprite 或 Laya.Box 等相关的基础类。 2. 给玩家对象添加刚体组件(Laya.RigidBody),以模拟物理行为。 3. 给玩家对象添加碰撞体组件(Laya.BoxCollider 或 Laya.CircleCollider 等),以处理与地面的碰撞检测。 4. 设置玩家对象的刚体属性,如质量(mass)、摩擦力(friction)等,根据需要进行调整。 5. 实现玩家对象与地面的碰撞回调函数(Laya.PhysicsComponent.onCollisionEnter),在回调函数中根据碰撞信息判断是否在地面上,并设置相应的行为。 以下是一个简单的示例代码: ```typescript class Player extends Laya.Sprite { private rigidBody: Laya.RigidBody; constructor() { super(); // 创建刚体组件 this.rigidBody = this.addComponent(Laya.RigidBody); // 创建碰撞体组件,假设为方形碰撞体 const collider = this.addComponent(Laya.BoxCollider); // 设置碰撞体大小和偏移量,根据实际情况进行调整 collider.width = 50; collider.height = 100; collider.x = -25; collider.y = -50; // 设置刚体属性 this.rigidBody.type = "dynamic"; // 动态刚体 this.rigidBody.mass = 1; // 质量 this.rigidBody.friction = 0.5; // 摩擦力 // 监听碰撞回调 this.rigidBody.onCollisionEnter = this.onCollisionEnter.bind(this); } private onCollisionEnter(other: Laya.Collider): void { // 判断是否与地面碰撞,可以根据实际情况修改判断逻辑 if (other.name === "Ground") { // 在地面上,取消受力和重力影响 this.rigidBody.linearVelocity = new Laya.Vector2(0, 0); this.rigidBody.gravityScale = 0; } } } // 创建玩家对象并添加到舞台 const player = new Player(); Laya.stage.addChild(player); ``` 需要注意的是,上述代码仅为示例,具体的实现和逻辑可能根据项目的需求有所不同。你可以根据实际情况进行调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值