Пример #1
0
        public void AutoCollisionSystem_Circle()
        {
            var tc = new TestCore();

            tc.Init();
            //tc.Duration = int.MaxValue;

            var texture = Texture2D.LoadStrict(@"TestData/IO/AltseedPink.png");

            Assert.NotNull(texture);

            var scene   = new Altseed2.Node();
            var manager = new CollisionManagerNode();

            scene.AddChildNode(manager);

            Engine.AddNode(scene);

            var player = new Player_Circle(texture);

            scene.AddChildNode(player);

            var comparison = new SpriteNode()
            {
                Texture        = texture,
                CenterPosition = texture.Size / 2,
                Position       = new Vector2F(500f, 100f),
                Scale          = new Vector2F(0.8f, 0.8f),
            };
            var colliderNode = new CircleColliderNode()
            {
                Radius = texture.Size.X / 2,
            };

            comparison.AddChildNode(colliderNode);
            colliderNode.AddChildNode(ColliderVisualizeNodeFactory.Create(colliderNode));
            scene.AddChildNode(comparison);

            tc.LoopBody(null, x =>
            {
                if (Engine.Keyboard.GetKeyState(Key.Escape) == ButtonState.Push)
                {
                    tc.Duration = 0;
                }
                if (x == 10)
                {
                    Assert.True(manager.ContainsCollider(colliderNode));
                    Assert.AreEqual(manager.ColliderCount, 2);
                }
            });
            tc.End();
        }
Пример #2
0
        static void Main(string[] args)
        {
            // Altseed2 を初期化します。
            Engine.Initialize("Collision", 640, 480);

            // 衝突判定が行われるノードの親ノードを作成します。
            var scene = new Node();

            // コライダを自動処理するノードをシーンに登録します。
            scene.AddChildNode(new CollisionManagerNode());


            // 衝突判定を持つSpriteNodeを生成します。
            var texture = Texture2D.Load(@"TestData/IO/AltseedPink256.png");
            var sprite  = new SpriteNode()
            {
                Position       = new Vector2F(200f, 200f),
                Scale          = new Vector2F(0.5f, 0.5f),
                Texture        = texture,
                CenterPosition = texture.Size / 2,
            };

            // 円形コライダノードを生成します。
            var collider = new CircleColliderNode()
            {
                Radius = texture.Size.X / 2,
            };

            // colliderの衝突判定を視覚化できるノードを生成します。
            var visualizer = ColliderVisualizeNodeFactory.Create(collider);

            // エンジンにノードを追加します。
            scene.AddChildNode(sprite);
            sprite.AddChildNode(collider);
            collider.AddChildNode(visualizer);
            Engine.AddNode(scene);

            // メインループ。
            // Altseed のウインドウが閉じられると終了します。
            while (Engine.DoEvents())
            {
                // Altseed を更新します。
                Engine.Update();
            }

            // Altseed の終了処理をします。
            Engine.Terminate();
        }
Пример #3
0
            public Player_Circle(Texture2D texture)
            {
                Engine.AddNode(text = new TextNode()
                {
                    Font     = Font.LoadDynamicFontStrict("TestData/Font/mplus-1m-regular.ttf", 40),
                    Position = new Vector2F(0, 0),
                    Color    = new Color(255, 255, 255, 255),
                });

                Texture        = texture;
                Position       = new Vector2F(0f, 300f);
                CenterPosition = texture.Size / 2;
                node           = new CircleColliderNode()
                {
                    Radius = texture.Size.X / 2
                };
                node.AddChildNode(ColliderVisualizeNodeFactory.Create(node));
                AddChildNode(node);
            }