public void Run() { // Altseedを初期化する。 asd.Engine.Initialize("Collision2D_Geometries", 640, 480, new asd.EngineOption()); // 図形描画オブジェクトのインスタンスを生成する。 asd.GeometryObject2D geometryObj0 = new asd.GeometryObject2D(); asd.GeometryObject2D geometryObj1 = new asd.GeometryObject2D(); asd.GeometryObject2D geometryObj2 = new asd.GeometryObject2D(); asd.GeometryObject2D geometryObj3 = new asd.GeometryObject2D(); // マウスによって動かす円。 asd.CircleShape selfCircle; // 停止している円、三角形、矩形。 asd.CircleShape circle; asd.TriangleShape triangle; asd.RectangleShape rect; // 図形描画オブジェクトをエンジンに追加する。 asd.Engine.AddObject2D(geometryObj0); asd.Engine.AddObject2D(geometryObj1); asd.Engine.AddObject2D(geometryObj2); asd.Engine.AddObject2D(geometryObj3); // マウスによって動かす円の形状と描画の設定を行う。 { // 円の外径を指定する。 selfCircle = new asd.CircleShape(); selfCircle.OuterDiameter = 100; // マウスによって動かす円を描画する図形として設定する。 geometryObj0.Shape = selfCircle; } // 停止している円の形状と描画の設定を行う。 { // 円の外径、中心位置を指定する。 circle = new asd.CircleShape(); circle.OuterDiameter = 100; circle.Position = new asd.Vector2DF(400, 100); // 円を描画する図形として設定する。 geometryObj1.Shape = circle; } // 停止している三角形の形状と描画の設定を行う。 { // 三角形の各頂点の位置を指定する。 triangle = new asd.TriangleShape(); triangle.SetPointByIndex(new asd.Vector2DF(440, 350), 0); triangle.SetPointByIndex(new asd.Vector2DF(340, 450), 1); triangle.SetPointByIndex(new asd.Vector2DF(580, 450), 2); // 停止している三角形を描画する図形として設定する。 geometryObj2.Shape = triangle; } // 停止している矩形の形状と描画の設定を行う。 { rect = new asd.RectangleShape(); rect.DrawingArea = new asd.RectF(70, 110, 300, 200); rect.Angle = 15; // 停止している矩形を描画する図形として設定する。 geometryObj3.Shape = rect; } // Altseedのウインドウが閉じられていないか確認する。 while (asd.Engine.DoEvents()) { // マウスによって制御される円の中心位置をマウスの位置とする。 selfCircle.Position = asd.Engine.Mouse.Position; // 停止している円・三角形・矩形のいずれかに、マウスによって動く円が衝突した時に円を赤く変化させる。 // そうでない時は白く変化させる。 if (selfCircle.GetIsCollidedWith(circle) || selfCircle.GetIsCollidedWith(triangle) || selfCircle.GetIsCollidedWith(rect)) { geometryObj0.Color = new asd.Color(255, 0, 0, 255); } else { geometryObj0.Color = new asd.Color(255, 255, 255, 255); } Recorder.CaptureScreen("Collision2D_Geometries", 30, 120, 0.5f, 0.5f); // Altseedを更新する。 asd.Engine.Update(); } // Altseedの終了処理をする。 asd.Engine.Terminate(); }
protected override void OnStart() { var scene = new asd.Scene(); var layer = new asd.Layer2D(); var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png"); var geometryObj1 = new asd.GeometryObject2D(); var geometryObj2 = new asd.GeometryObject2D(); var geometryObj3 = new asd.GeometryObject2D(); var geometryObj4 = new asd.GeometryObject2D(); var geometryObj5 = new asd.GeometryObject2D(); var geometryObj6 = new asd.GeometryObject2D(); layer.AddObject(geometryObj1); layer.AddObject(geometryObj2); layer.AddObject(geometryObj3); layer.AddObject(geometryObj4); layer.AddObject(geometryObj5); layer.AddObject(geometryObj6); scene.AddLayer(layer); asd.Engine.ChangeScene(scene); { var circle = new asd.CircleShape(); circle.OuterDiameter = 100.0f; circle.InnerDiameter = 10.0f; circle.NumberOfCorners = 96; circle.Position = new asd.Vector2DF(100, 50); geometryObj1.Shape = circle; geometryObj1.Texture = texture; geometryObj1.Position = new asd.Vector2DF(0, 0); } { var arc = new asd.ArcShape(); arc.OuterDiameter = 100; arc.InnerDiameter = 10; arc.NumberOfCorners = 96; arc.Position = new asd.Vector2DF(300, 50); arc.StartingCorner = 90; arc.EndingCorner = 5; geometryObj2.Shape = arc; geometryObj2.Texture = texture; geometryObj2.Position = new asd.Vector2DF(0, 0); } { var line = new asd.LineShape(); line.StartingPosition = new asd.Vector2DF(410, 50); line.EndingPosition = new asd.Vector2DF(630, 50); line.Thickness = 5.0f; geometryObj3.Shape = line; geometryObj3.Position = new asd.Vector2DF(0, 0); } { var rect = new asd.RectangleShape(); rect.DrawingArea = new asd.RectF(10, 110, 300, 200); rect.UV = new asd.RectF(0.0f, 0.0f, 0.5f, 0.5f); geometryObj4.Shape = rect; geometryObj4.Texture = texture; geometryObj4.Position = new asd.Vector2DF(0, 0); } { var triangle = new asd.TriangleShape(); triangle.SetPointByIndex(new asd.Vector2DF(320, 350), 0); triangle.SetPointByIndex(new asd.Vector2DF(100, 450), 1); triangle.SetPointByIndex(new asd.Vector2DF(540, 450), 2); triangle.SetUVByIndex(new asd.Vector2DF(0.5f, 0.2f), 0); triangle.SetUVByIndex(new asd.Vector2DF(0.1f, 0.5f), 1); triangle.SetUVByIndex(new asd.Vector2DF(0.9f, 0.7f), 2); geometryObj5.Shape = triangle; geometryObj5.Texture = texture; geometryObj5.Position = new asd.Vector2DF(0, 0); } { var polygon = new asd.PolygonShape(); for (int i = 0; i < 10; ++i) { asd.Vector2DF vec = new asd.Vector2DF(1, 0); vec.Degree = i * 36; vec.Length = (i % 2 == 0) ? 100 : 55; polygon.AddVertex(vec + new asd.Vector2DF(500, 250)); } geometryObj6.Shape = polygon; geometryObj6.Texture = texture; geometryObj6.Position = new asd.Vector2DF(0, 0); } }