实现移动运动体

2024-04-16

Project:我正在制作一个简单的项目,其中我希望能够制作一个运动体并将其从 x 点移动到 y 点。 “创建运动体”似乎没有太多直接内容。我一直在关注一些关于实现运动体的不同教程,因为我找不到指定如何正确执行此操作的教程。

Problem:这似乎是一个简单的修复,但我只是无法弄清楚问题是什么,因为我不完全理解如何实现运动体。我相信问题出在这段代码中kinematicBody.setLinearVelocity(0.0f, 1.0f);因为我得到一个错误"setLinearVelocity"陈述“方法 setLinearVelocity(float, float) 对于 BodyDef 类型未定义”。我觉得我在这里做错了什么。

我想要的结果:我希望能够创建一个从 x 点移动到 y 点的运动体。

这是我的相关代码:

    package com.mohamed.JungleFighter;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.CircleShape;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;
import com.sun.xml.internal.ws.wsdl.writer.document.soap.Body;

public class JungleFighter extends Game {


  World world = new World(new Vector2(0, -100), true);  
  Box2DDebugRenderer debugRenderer;  
  OrthographicCamera camera;  
  static final float STEP=1/60f;  
  static final int VELOCITYITERATIONS=6;  
  static final int POSITIONITERATIONS=2;  
  static final float WORLD_TO_BOX=0.01f;  
  static final float BOX_WORLD_TO=100f;  
  @Override  
  public void create() {            
       camera = new OrthographicCamera();  
       camera.viewportHeight = 320;  
       camera.viewportWidth = 480;  
       camera.position.set(camera.viewportWidth * .5f, camera.viewportHeight * .5f, 0f);  
       camera.update(); 

 //test platform 3
           BodyDef kinematicBody =new BodyDef();  

       kinematicBody.type = BodyType.KinematicBody;
       kinematicBody.position.set(100, 250);

       PolygonShape shape = new PolygonShape();
       shape.setAsBox(50f, 25f);

       fixtureDef.shape = shape;
       fixtureDef.density = 0;
       fixtureDef.friction = 0;
       fixtureDef.restitution = 0;

       kinematicBody.setLinearVelocity(0.0f, 1.0f);


       // Create our body in the world using our body definition
       world.createBody(kinematicBody).createFixture(shape, 50.0f);
       shape.dispose();
       

       debugRenderer = new Box2DDebugRenderer();  
  }  
  @Override  
  public void dispose() {  
  }  
  @Override  
  public void render() {            
       Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);  
       debugRenderer.render(world, camera.combined);  
       world.step(STEP, VELOCITYITERATIONS, POSITIONITERATIONS);  
  }  
  @Override  
  public void resize(int width, int height) {  
  }  
  @Override  
  public void pause() {  
  }  
  @Override  
  public void resume() {  


    }  
 }  

看起来好像您没有在任何地方使用fixtureDef 对象。创建主体后,您应该将其设置为主体。

创建运动体的方式与静态体没有太大区别。唯一的区别是如何定义 BodyDef 的类型。


创建运动体 它也可以是 StaticBody 或 DynamicBody。取决于您想要完成什么。

BodyDef tempBodyDef = new BodyDef();
tempBodyDef.type = BodyType.KinematicBody;

创建 FixtureDefinition(描述夹具属性的定义) 还要创建一个形状并将其分配给夹具。 您可以修改 tempFD 的 firction、isSensor 等属性来获得您想要的结果。

FixtureDef tempFD = new FixtureDef();
PolygonShape tempShape = new PolygonShape();
tempFD.shape = tempShape;

身体形状的中心位于 0,0

Vector2 tempVector = new Vector2();
tempVector.x = 0;
tempVector.y = 0;

设置身体形状的大小和位置。 请注意,我使用了宽度和高度的一半,因为这是 setAsBox 函数所需要的。

tempShape.setAsBox(myWidth/2f, myHeight/2f, tempVector, myAngle);
tempBodyDef.position.set(myXPosition, myYPosition);

创建主体并为其分配夹具

Body testBody = world.createBody(tempBodyDef);
testBody.createFixture(tempFD);

使用完形状后,不要忘记将其丢弃。

tempShape.dispose();

你就完成了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现移动运动体 的相关文章

随机推荐

  • 如何从文本文件python打印下一行

    我正在尝试从 python 中的文本文件中打印两行文本 它们在单独的行上彼此相邻 所以文本文件看起来像这样 Apples Oranges Pears Lemons 如果有人输入苹果 我希望程序打印出来 Apples Oranges 这是我到
  • `expss` 和 `data.table` 不能很好地协同工作

    我正在与expss包来生成调查数据的横幅表 但我不断收到一个在 Google 上很少出现的错误 Error in data table cell var col var row var object R listCopiesNamed no
  • 从 Android Studio 的图库中选择图像?

    有人可以告诉我问题是什么 它不起作用 所以请快速帮助我真正需要 imagePick setOnClickListener new View OnClickListener Override public void onClick View
  • 无法删除ECS(EC2容器服务)的EC2实例

    随着 Amazon ECS 最近推出 我尝试用它开始一个示例 看起来ECS将创建一个EC2实例作为ECS的 集群 其名称类似于 ECS实例 EC2ContainerService default e40c3e79 1d27 4512 a79
  • PHP 选择列表 - 在数据库中插入多个值

    我正在尝试使用选择列表在数据库中插入多个值 到目前为止我得到了什么 HTML
  • 编辑表时关闭 PyQt 事件循环

    我正在使用 PyQt 开发 GUI GUI 有一个 qListWidget 一个 qTableWidget 和一个用 Mayavi 实现的绘图 该列表指的是绘制的形状 例如圆柱体和圆锥体 当在列表中选择形状时 我希望将形状的属性加载到表中
  • 将 unicode 字符的十六进制序列解码为字符串的最佳方法

    解码字符串最免代码的方法是什么 xD0 xAD xD0 xBB xD0 xB5 xD0 xBA xD1 x82 xD1 x80 xD0 xBE xD0 xBD xD0 xBD xD0 xB0 xD1 x8F C 中的人类字符串 该十六进制字
  • carouFredSel 响应高度

    我使用 carouFredSel 时遇到响应式旋转木马的高度问题 因为图像是响应式的 并且轮播也设置为响应式的 它仍然将图像的最大高度添加到 div 中 当我的图像宽度为 740 高度为 960 时 它将图像大小调整为响应宽度以适合屏幕 图
  • 使用 pip 构建 pysha3 时出错?错误:pysha3 构建轮子失败

    当我尝试使用 pip install pysha3 进行安装时 出现错误 错误 无法为 pysha3 构建轮子 我已经安装了 Windows 构建工具 不幸的是我在谷歌上找不到太多帮助 我使用的是 Windows 11 这是日志 PS C
  • 是否有 Windows API 可以修改扩展名的文件类型关联?

    我正在寻找一种方法来以编程方式调整 Windows 系统上文件关联的细节 例如 针对特定文件类型的 打开 操作的 执行此操作的应用程序用户 设置 显然 我可以通过直接修改注册表来做到这一点 但如果有一个 API 我更愿意使用它 因为它可能更
  • 如何将 NSMutableArray 的元素转换为 NSString

    我有 1 个 NSMutableArray 我想转换数组中的任何数据将在 NSString 中 告诉我代码 Array 只是 NSMutableArray 类的对象 如果您只想要数组的元素 那么您可以尝试 ComponentsJoinedB
  • Eclipse Bug:未处理的事件循环异常没有更多句柄

    我使用 Swing 和 MigLayout 构建了一个 GUI 我在 Windows 7 Ultimate 上使用 Eclipse 4 2 2 64 位 每次我单击返回窗口编辑代码时 都会出现一个弹出窗口 然后提示我重新启动 Eclipse
  • 如何将 YAML 转换为 JSON? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找在 YAML 文件和 JSON 之间进行转换 这真的很难找到任何信息 如果不需要 Json NET 的功能 也可以直接使用 Se
  • 需要:Rikulo UXL 示例

    我想让一些 UXL 与 Dart 编辑器一起使用 我担心我感觉示例代码用户体验实验室概述 http docs rikulo org ui latest UXL Fundamentals UXL Overview html要么已经过时 要么缺
  • 龙卷风错误处理

    我希望能够处理输入错误 URL 时显示的更好的错误E g localhost 8000 AFDADSFDKFADS 我收到一条丑陋的 python 回溯消息 因为抛出了一个ornado web HTTPError 异常 我知道我可以使用正则
  • iOS 9+ 通用链接不适用于 Google 应用

    我工作的公司让我问以下问题 当在其他应用程序 原生 Apple 应用程序 Slack 等 中点击通用链接时 我们的应用程序会打开 但如果在任何 Google 应用程序 环聊 收件箱等 中点击相同链接 则不会直接打开通用链接通过我们的应用程序
  • 在 Visual Studio 2017 中删除垂直虚线缩进线

    我刚刚安装了 Visual Studio 2017 代码编辑器中出现了奇怪的垂直缩进标记 我怎样才能删除它们 附 我禁用了所有扩展 但这没有帮助 下面有一个选项Tools Options Text Editor called Show st
  • mvc3 路由设置为 id, id2 id3

    我有以下区域路线设置 context MapRoute Admin default3 Admin controller action id id2 id3 new action Index context MapRoute Admin de
  • capistrano,:db 角色,它的用途是什么?

    据我所知 卡皮斯特拉诺 db角色仅用于运行迁移 因此 在大多数情况下 它可能不应该实际上是运行数据库的服务器 为什么那里会有 ruby rails 堆栈 或者允许 ssh 登录 它只是您想要实际执行 Rails 迁移的任何服务器 并且只有标
  • 实现移动运动体

    Project 我正在制作一个简单的项目 其中我希望能够制作一个运动体并将其从 x 点移动到 y 点 创建运动体 似乎没有太多直接内容 我一直在关注一些关于实现运动体的不同教程 因为我找不到指定如何正确执行此操作的教程 Problem 这似