【问题标题】:Farseer physics...hello world...?先知物理学……你好世界……?
【发布时间】:2011-08-21 06:35:09
【问题描述】:

我不知道为什么,但我似乎无法找出为什么这不起作用...... 我正在尝试做一些非常简单的东西,比如刚刚从屏幕上掉下来的东西。

好像最新的下载和网站上的第一个示例代码,我还是错了。

我有这个:

using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Collections;
using Microsoft.Xna.Framework.Input;
using FarseerPhysics.Dynamics;
using FarseerPhysics.Collision.Shapes;


namespace Cross {
    public class Game1 : Microsoft.Xna.Framework.Game {
        GraphicsDeviceManager graphics;

        public Game1() {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            graphics.IsFullScreen = false;
            graphics.PreferredBackBufferHeight = 600;
            graphics.PreferredBackBufferWidth = 1200;

            this.Window.Title = "Game";
        }


        protected override void Initialize() {
            World world = new World(Vector2.Zero);

            Body myBody = world.CreateBody();
            myBody.BodyType = BodyType.Dynamic;

            CircleShape circleShape = new CircleShape(0.5f);
            Fixture fixture = myBody.CreateFixture(circleShape);

            base.Initialize();
        }

        protected override void LoadContent() {

        }

        protected override void UnloadContent() {
        }


        protected override void Update(GameTime gameTime) {
            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime) {
            base.Draw(gameTime);
        }
    }
}

但我得到 2 个错误:

没有CreateBody() 方法(虽然有一个AddBreakableBody()

'FarseerPhysics.Dynamics.World' does not contain a definition for 'CreateBody' and no extension method 'CreateBody' accepting a first argument of type 'FarseerPhysics.Dynamics.World' could be found (are you missing a using directive or an assembly reference?)

CircleShape 构造函数有 2 个参数(这很简单,但在示例中仍然出错)

'FarseerPhysics.Collision.Shapes.CircleShape' does not contain a constructor that takes 1 arguments

我已经尝试了很多东西,但我很困惑为什么我能得到这个。此代码对其他人有用吗?我的 dll 搞砸了吗?

【问题讨论】:

    标签: c# xna physics method-missing farseer


    【解决方案1】:

    Their example 错了,你是对的! (我很惊讶他们有如此明显的错误。)

    转到类 CircleShape 并查看参数的顺序。圆由位置和半径定义,而不仅仅是半径。

    然后在您的项目中搜索 CreateBody(),看看应该从哪里调用该方法。

    【讨论】:

    • FarseerPhysics.Factories.BodyFactory.CreateBody()也许
    • 我还建议下载 XNA Testbed 示例,因为它们展示了如何使用某些方法:farseerphysics.codeplex.com/releases/view/64108。您还可以通过浏览源代码中的“示例”部分获取更多代码示例:farseerphysics.codeplex.com/SourceControl/changeset/view/88395
    • @keyboardp 非常感谢!第二个链接给了我一些对我有很大帮助的来源
    • 是的,文档似乎已经过时了。 Body factory 在最新版本 (3.5) 中解决了这个问题。请注意,记录在案的版本是 3.3,在我看来,对代码进行如此巨大的更改还为时过早...
    猜你喜欢
    • 2011-06-29
    • 2021-11-19
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多