public void SpawnSelf(EnemyData enemy_data, Transform parent_transform) { CharacterData character_data = new CharacterData(); character_data.name = enemy_data.enemyType.ToString(); character_data.moveSpeed = enemy_data.moveSpeed; character_data.jumpInitForce = enemy_data.jumpInitForce; character_data.maxJumpCnt = enemy_data.maxJumpCnt; character_data.atk = enemy_data.fire_atk; character_data.hp = enemy_data.hp; if (damageArea != null) { damageArea.Reset(enemy_data.hit_atk, DamageArea.DamageGroup.Enemy); } Reset(character_data); if (muzzle_ != null) { muzzle_.Reset(); } Clear(); // Faces left SetFaceRight(false, true /* force set */); transform.parent = parent_transform; transform.localPosition = new Vector2( // the center x axis of a unit length from (x to x + 1). MapValue.RealValue(enemy_data.spawnPosition.x + enemy_data.spawnPosition.x + 1) * 0.5f, MapValue.RealValue(enemy_data.spawnPosition.y)); transform.localScale = Vector3.one; is_action_ = false; is_visible_ = false; EventPool.Instance.Emit(Events.OnEnemyBorn, this); }