private void Collider2D_OnCollide(PolygonColliderObject collider) { if (collider.Tag == "Bullet") { OnCollideBullet(); } }
public PolygonCollider(SceneActor actor, Polygon polygon, CollisionWorld collisionWorld, int layer) : base(actor) { colliderObject = new PolygonColliderObject(polygon, actor.Transform); AddSubObject(colliderObject); indexInWorld = collisionWorld.AddCollider(colliderObject, layer); this.collisionWorld = collisionWorld; this.layer = layer; colliderObject.OnCollide += ColliderObject_OnCollide; }
private void AddNewObject(MouseUpEvent evt) { objectEditSelectionContainer.Clear(); if (objectSelectionField.value == null) { string typeOfObject = ObjectTypeLayer.value; switch (typeOfObject) { case "SpriteObject": #region ObjectField SpriteSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField"); if (SpriteSpriteSelection.value != null) { ScriptableObject so = ScriptableObject.CreateInstance <SpriteObject>(); SpriteObject spriteObject = (SpriteObject)so; Sprite s = (Sprite)SpriteSpriteSelection.value; spriteObject.sprite = (Sprite)SpriteSpriteSelection.value; EditorUtility.SetDirty(spriteObject); spriteObject.x = (int)s.rect.x; EditorUtility.SetDirty(spriteObject); spriteObject.y = (int)s.rect.y; EditorUtility.SetDirty(spriteObject); spriteObject.width = (int)s.rect.width; EditorUtility.SetDirty(spriteObject); spriteObject.height = (int)s.rect.height; EditorUtility.SetDirty(spriteObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(spriteObject, "Assets/Export/Data/SpriteData.asset"); } else { AssetDatabase.CreateAsset(spriteObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion case "EnvironmentObject": #region ObjectField EnvironmentSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField"); ObjectField ColliderSelection = ve.Q <ObjectField>("SpriteColliderObjectSelectionField"); if (EnvironmentSpriteSelection.value != null) { ScriptableObject eo = ScriptableObject.CreateInstance <EnvironmentObject>(); EnvironmentObject environmentObject = (EnvironmentObject)eo; environmentObject.sprite = (SpriteObject)EnvironmentSpriteSelection.value; EditorUtility.SetDirty(environmentObject); if (ColliderSelection.value != null) { environmentObject.collider = (ColliderObject)ColliderSelection.value; EditorUtility.SetDirty(environmentObject); } if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(environmentObject, "Assets/Export/Data/EnvironementData.asset"); } else { AssetDatabase.CreateAsset(environmentObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); //ve.Bind(serializedObject); break; #endregion case "StaticObject": #region ObjectField StaticSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField"); ObjectField StaticColliderSelection = ve.Q <ObjectField>("SpriteColliderObjectSelectionField"); if (StaticSpriteSelection.value != null && StaticColliderSelection.value != null) { ScriptableObject so = ScriptableObject.CreateInstance <StaticObject>(); StaticObject staticObject = (StaticObject)so; staticObject.sprite = (SpriteObject)StaticSpriteSelection.value; EditorUtility.SetDirty(staticObject); staticObject.collider = (ColliderObject)StaticColliderSelection.value; EditorUtility.SetDirty(staticObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(staticObject, "Assets/Export/Data/StaticObject.asset"); } else { AssetDatabase.CreateAsset(staticObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion case "AnimationObject": #region ScriptableObject animso = ScriptableObject.CreateInstance <AnimationObject>(); AnimationObject animObject = (AnimationObject)animso; if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(animObject, "Assets/Export/Data/AnimationObject.asset"); } else { AssetDatabase.CreateAsset(animObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion case "EnemyObject": #region ObjectField EnemyObjectSpriteSelection = ve.Q <ObjectField>("EnemySpriteObjectSelectionField"); FloatField EnemyHealthField = ve.Q <FloatField>("EnemyObjectHealthField"); FloatField EnemyAttackField = ve.Q <FloatField>("EnemyObjectAttackField"); ObjectField EnemyObjectColliderSelection = ve.Q <ObjectField>("EnemyColliderObjectSelectionField"); if (EnemyObjectSpriteSelection.value != null && EnemyHealthField.value != 0 && EnemyAttackField.value != 0 && EnemyObjectColliderSelection.value != null) { ScriptableObject so = ScriptableObject.CreateInstance <EnemyObject>(); EnemyObject enemyObject = (EnemyObject)so; enemyObject.sprite = (SpriteObject)EnemyObjectSpriteSelection.value; EditorUtility.SetDirty(enemyObject); enemyObject.health = EnemyHealthField.value; EditorUtility.SetDirty(enemyObject); enemyObject.attack = EnemyAttackField.value; EditorUtility.SetDirty(enemyObject); enemyObject.enemyCollider = (CircleColliderObject)EnemyObjectColliderSelection.value; EditorUtility.SetDirty(enemyObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(enemyObject, "Assets/Export/Data/EnemyObject.asset"); } else { AssetDatabase.CreateAsset(enemyObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion case "EnemySpawner": #region ObjectField EnemySpawnerObjectSpriteSelection = ve.Q <ObjectField>("EnemySpawnerSpriteObjectSelectionField"); FloatField EnemySpawnerTimeField = ve.Q <FloatField>("EnemySpawnTimeField"); ObjectField EnemySpawnerenemySelection = ve.Q <ObjectField>("EnemyObjectSelectionField"); ObjectField EnemySpawnerObjectColliderSelection = ve.Q <ObjectField>("SpawnerColliderObjectSelectionField"); if (EnemySpawnerObjectSpriteSelection.value != null && EnemySpawnerTimeField != null && EnemySpawnerenemySelection.value != null && EnemySpawnerObjectColliderSelection.value != null) { ScriptableObject so = ScriptableObject.CreateInstance <EnemySpawnerObject>(); EnemySpawnerObject enemySpawnerObject = (EnemySpawnerObject)so; enemySpawnerObject.sprite = (SpriteObject)EnemySpawnerObjectSpriteSelection.value; EditorUtility.SetDirty(enemySpawnerObject); enemySpawnerObject.spawnTime = EnemySpawnerTimeField.value; EditorUtility.SetDirty(enemySpawnerObject); enemySpawnerObject.enemy = (EnemyObject)EnemySpawnerenemySelection.value; EditorUtility.SetDirty(enemySpawnerObject); enemySpawnerObject.spawnerCollider = (CircleColliderObject)EnemySpawnerObjectColliderSelection.value; EditorUtility.SetDirty(enemySpawnerObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(enemySpawnerObject, "Assets/Export/Data/EnemySpawnerObject.asset"); } else { AssetDatabase.CreateAsset(enemySpawnerObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion //case "Player": // break; case "PolygonCollider": #region FloatField PolyColliderHeightField = ve.Q <FloatField>("PolygonColliderHeightField"); FloatField PolyColliderWidthField = ve.Q <FloatField>("PolygonColliderWidthField"); Toggle PolyColliderIsTriggerToggle = ve.Q <Toggle>("PolygonColliderSetTrigger"); if (PolyColliderHeightField != null && PolyColliderWidthField != null && PolyColliderIsTriggerToggle != null) { ScriptableObject so = ScriptableObject.CreateInstance <PolygonColliderObject>(); PolygonColliderObject polygonColliderObject = (PolygonColliderObject)so; polygonColliderObject.height = PolyColliderHeightField.value; EditorUtility.SetDirty(polygonColliderObject); polygonColliderObject.width = PolyColliderWidthField.value; EditorUtility.SetDirty(polygonColliderObject); polygonColliderObject.isTrigger = PolyColliderIsTriggerToggle.value; EditorUtility.SetDirty(polygonColliderObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(polygonColliderObject, "Assets/Export/Data/PolygonColliderObject.asset"); } else { AssetDatabase.CreateAsset(polygonColliderObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion case "CircleCollider": #region FloatField CircleColliderRadiustField = ve.Q <FloatField>("CircleColliderRadiusField"); Toggle CircleColliderIsTriggerToggle = ve.Q <Toggle>("CircleColliderSetTrigger"); if (CircleColliderRadiustField != null && CircleColliderIsTriggerToggle != null) { ScriptableObject so = ScriptableObject.CreateInstance <CircleColliderObject>(); CircleColliderObject circleColliderObject = (CircleColliderObject)so; circleColliderObject.radius = CircleColliderRadiustField.value; EditorUtility.SetDirty(circleColliderObject); circleColliderObject.isTrigger = CircleColliderIsTriggerToggle.value; EditorUtility.SetDirty(circleColliderObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(circleColliderObject, "Assets/Export/Data/CircleColliderObject.asset"); } else { AssetDatabase.CreateAsset(circleColliderObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } break; #endregion case "ProjectileObject": #region ObjectField ProjectileObjectSpriteSelection = ve.Q <ObjectField>("ProjectileSpriteObjectSelectionField"); FloatField ProjectileSpeedField = ve.Q <FloatField>("ProjectileSpeedField"); ObjectField ProjectileObjectColliderSelection = ve.Q <ObjectField>("ProjectileColliderObjectSelectionField"); if (ProjectileObjectSpriteSelection.value != null && ProjectileSpeedField != null && ProjectileObjectColliderSelection.value != null) { ScriptableObject so = ScriptableObject.CreateInstance <ProjectileObject>(); ProjectileObject projectileObject = (ProjectileObject)so; projectileObject.sprite = (SpriteObject)ProjectileObjectSpriteSelection.value; EditorUtility.SetDirty(projectileObject); projectileObject.speed = ProjectileSpeedField.value; EditorUtility.SetDirty(projectileObject); projectileObject.projectileCollider = (CircleColliderObject)ProjectileObjectColliderSelection.value; EditorUtility.SetDirty(projectileObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(projectileObject, "Assets/Export/Data/ProjectileObject.asset"); } else { AssetDatabase.CreateAsset(projectileObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion case "PlayerObject": #region ObjectField PlayerObjectSpriteSelection = ve.Q <ObjectField>("PlayerSpriteObjectSelectionField"); FloatField PlayerHealthField = ve.Q <FloatField>("PlayerObjectHealthField"); FloatField PlayerAttackField = ve.Q <FloatField>("PlayerObjectAttackField"); FloatField PlayerSpeedField = ve.Q <FloatField>("PlayerObjectSpeedField"); ObjectField PlayerObjectProjectileSelection = ve.Q <ObjectField>("PlayerProjectileObjectSelectionField"); ObjectField PlayerObjectColliderSelection = ve.Q <ObjectField>("PlayerColliderObjectSelectionField"); if (PlayerObjectSpriteSelection.value != null && PlayerHealthField.value != 0 && PlayerAttackField.value != 0 && PlayerSpeedField.value != 0 && PlayerObjectProjectileSelection.value != null && PlayerObjectColliderSelection.value != null) { ScriptableObject so = ScriptableObject.CreateInstance <PlayerObject>(); PlayerObject playerObject = (PlayerObject)so; playerObject.sprite = (SpriteObject)PlayerObjectSpriteSelection.value; EditorUtility.SetDirty(playerObject); playerObject.health = PlayerHealthField.value; EditorUtility.SetDirty(playerObject); playerObject.attack = PlayerAttackField.value; EditorUtility.SetDirty(playerObject); playerObject.projectile = (ProjectileObject)PlayerObjectProjectileSelection.value; EditorUtility.SetDirty(playerObject); playerObject.playerCollider = (CircleColliderObject)PlayerObjectColliderSelection.value; EditorUtility.SetDirty(playerObject); if (string.IsNullOrEmpty(ObjectNameTextField.value)) { AssetDatabase.CreateAsset(playerObject, "Assets/Export/Data/PlayerObject.asset"); } else { AssetDatabase.CreateAsset(playerObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset"); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); break; #endregion } } }
private void ColliderObject_OnCollide(PolygonColliderObject collider) { OnCollide(collider); }