ç§ã®èšäºã§ã¯ããžã£ã³ã«ã®éžæãšèšå®ãæçµã¯ã¬ãžããã§ã®çµäºãéçºããã»ã¹äžã«èžã¿èŸŒãã ãã¹ãŠã®ã¬ãŒããªã©ã2é±éã§ã²ãŒã ãäœæããçµéšã説æããããšããŠããŸãã ã²ãŒã éçºã®çµéšãè±å¯ãªäººã«ãšã£ãŠã¯ããã®èšäºã¯ãããŠãé¢çœããªãã§ãããããéçºè
ãå§ãã人ã¯èªåã«ãšã£ãŠè峿·±ããã®ãèŠã€ããããšãã§ãããšæããŸãã
ååã¯ã²ãŒã ã®ãã®éšåã§ãããæåŸã®ç¬éãŸã§å»¶æãããäœæ¥ã§ãã ãã®çµæãæ®å¿µãªãã倱æãã䟡å€ã®ãããã®ã¯äœããããŸããã§ããããžã£ã³ã«ãèšå®ããããã
ã³ã³ãã¹ããããŒã-ãéžæãïŒå¥œããªããã«è§£éããåŒã°ããïŒãçšèª-2é±éãšãããããªãæšæºçã«å§ãŸããŸããã ç§ã¯2Dã²ãŒã ã®ããããªæçµ¶ã«èŠããã§ããã®ã§ã2D / 3Dã®åé¡ã¯ãŸã£ããç«ã¡ãŸããã§ããã ãã®ãžã£ã³ã«ãšèšå®ã§ã¯ãã§ã«é£ãããªã£ãŠããããããã¹ããŒã¹ã¬ã³ãžã£ãŒããšãã¡ã«ãã€ãããšãã100æé以äžãè²»ããã2ã€ã®ãæ°ã«å
¥ãã®ã²ãŒã ããå§ããããšã«ããŸããã ãã®ãããç§ã¯ãã®ãžã£ã³ã«ã決å®ããŸãã-ãšãªãŒãã®ä»çµã¿ã«åºã¥ããŠæ§ç¯ãããã²ãŒã ã¯ããã¡ãã倧å¹
ã«åæžãããŸããã ãã®ãžã£ã³ã«ã®è«ççãªèšå®ã¯Sci-fiã§ãããã·ãŒã³ã¯ã¹ããŒã¹ã§ãã2é±éã§ã¯ãæäœéã®äŸ¡å€ã®ãããã°ã©ãŠã³ãã¬ãã«ããäœæããããšã¯éåžžã«å°é£ã ããã§ãã
å¿
èŠãªã³ã³ãã³ãã®éãæå°éã«ããããã«ãçæãããææã·ã¹ãã ãæŸæ£ããå
šäœãšããŠããããèŠæš¡ããæŸæ£ããããšã決å®ãããŸããã ã²ãŒã å
šäœã1ã€ã®å°ææåž¯å
ã§è¡ãããããã€ãã®ã»ã¯ã¿ãŒã«åå²ãããŠããŸããèå³ã®ãããã€ã³ãã®æ°ã¯æå°éã§ãã ãããããã®ãããªæ±ºå®ã¯ã²ãŒã ã®ä»ã®åŽé¢ã«æéãæ®ããŸãããäžçã®ç ç©¶ãæãäžããã°ãä»ã®ãã¹ãŠã«æéã¯æ®ããŸããã
忥ãã€ã³ã¿ãŒãã§ãŒã¹ã®ã¹ã±ãããšäžé£ã®æ©èœãäœæãããæ¬¡ã®14æ¥éã§å®è£
ãããŸãããããããã§ãç§ã¯ããã«ébarã«è¡åããŸããïŒåŸã§å€æããŸããããç¡é§ã«ãªããŸããïŒ-GGã®ããŒã¹ãåãããå°ææåž¯ã«äŸµå
¥ããç¥ç§çãªäŸµç¥è
ã«ã€ããŠæãã€ããæåã®ã¢ã€ãã¢ãåºç€ãšããŠæ¡çšãããŸããã 詳现ã«ã€ããŠã¯ãã¹ããŒãªãŒã®å²ãåœãŠãèãåºãã®ãšåãããã«ãããšã§æ€èšããå¿
èŠããããŸããã
å
ãæãéèŠã§ãã-æ©èœã
ç¹åŸŽ
ç§ã¯æ¬åœã«æåãå°œãããŠãã§ããã ãå€ãã®ç°ãªãããããå®è£
ãããã£ãã®ã§ããããããã®å€ãã«ã¯1ã€ã®ç®æšãããããŸããã§ããã ãããã®éšåã®1ã€ã¯ããŒãã³ã°ããµã€ã«ã§ããã 1åã®æ»æã§å°ããªæµãççºãããèœåãããã«ãããããããã²ãŒã ããã¬ã€ãã人ãå®éã«ããããå®éã«äœ¿çšããããšã¯ãªãã£ãããã§ãã åæã«ãããããäœæããã«ã¯ããªãã®æéãããããŸããã
äžè¬ã«ãäž»ãªæ©èœã®ããããã®ãªã¹ãã¯æ¬¡ã®ããã«ãªããŸããã
- æŠåšãã«ã¹ã¿ãã€ãºããæ©èœãåãããã¬ã€ã€ãŒå¶åŸ¡ã®å®å®è¹
- ããŸããŸãªåãäžããã€ã³ãã§åãäžããããšãã§ããããã€ãã®çš®é¡ã®æŠåš
- æµã®æ®éªžãæŸã£ãŠåºå°ã«é£ããŠè¡ãããã®ããã®ãéãåãåãèœå
- éã«ãã€ããŒãžã£ã³ãããè€æ°ã®ã»ã¯ã¿ãŒ
- èªå°ããã³å¶åŸ¡ãããŠããªãæŠåš
- ç°ãªãç¹æ§ãæã€ããã€ãã®ã¿ã€ãã®æµ
- ããŒã¹ãŸãã¯2ã€ã®ã¹ããŒãªãŒã¯ãšã¹ããå°ãªããšã2ã€ã®ãšã³ãã£ã³ã°
- ãã¹ããããŠã²ãŒã ã®éèŠãªèŠçŽ ã¯ãã¹æŠã§ã
ãªã¹ãã¯ããªã倧ããããšã倿ããŸããããäœããã®æ¹æ³ã§ããããã®ãã¹ãŠã®æ©èœãããŸããŸãªæã®èŸŒãã 床åãã§ã²ãŒã ã§å®çŸãããŸããã
éå§ïŒæåã®ã¢ãã«ãšç©ºéå
ã®åã
ãžã£ã³ã«ãšæ©èœã»ããã§æ±ºå®ãããåŸã3Dãšãã£ã¿ãŒã§2ã€ã®ã¢ãã«ïŒäž»äººå
¬ã®å®å®è¹ãšæµã®1ã€ïŒããã°ããã¹ã±ãããããŸããã
æµè¹ã®åå§æ§ãšç«äœæ§ã«ã¯é°è¬ã®æ£åœæ§ããããŸãããããŠãã€ãã«ãããã°ã©ãã³ã°ãéå§ããããšãå¯èœã«ãªããŸããã
æåã®ã¹ãããã¯ãå®å®è¹ãšã«ã¡ã©ã®åããå®è£
ããããšã§ããã
åãã¯éåžžã«ç°¡åã«å®è£
ãããæ
£æ§ããã®ä»ã®çŸå®çãªãã®ã¯ãããŸããã ãã¬ã€ã€ãŒã®è¹ã¯ãªãžããããã£ãæã€ã¢ãã«ã§ãåãã£ãã¯ã«ã¯è§é床ãšäžŠé²é床ãäžããããŸãã è§é床ãååŸããã«ã¯ãäžå¿ããã®å€äœãã¯ãã«ãããŠã¹ããååŸããåãã£ãã¯ã§ããŠã¹ã®åãã®çŸåšã®ãã«ã¿ãå€äœã«è¿œå ãããã¯ãã«èªäœã«1æªæºã®ä¿æ°ãæããŸããè¹ã®å°ããªæ
£æ§ã®é¯èŠã§ãããªãæ»ãããªå¶åŸ¡ãåŸãããŸãã
䞊é²éåã®å Žåã¯ããã«ç°¡åã§ããè¹ã¯ããŒã«ã«ã®ãåæ¹ãã®æ¹åã«ç§»åããW / SããŒãæŒããšé床ãåŸã
ã«å¢å ãŸãã¯æžå°ããŸãã
ã«ã¡ã©ã䜿çšãããšããã¹ãŠãéåžžã«ç°¡åã«ãªããŸããã é¡ã®è¹ã«ã«ã¡ã©ãåãä»ããã®ã¯æªãèãã§ãããããã£ãŠãã«ã¡ã©ãšè¹ã¯æ¥ç¶ãããŠããŸããããã«ã¡ã©ã«ã¯ãè¹ã®åŸãããçã£ãŠããç®æšç¹ãšå転è§åºŠããããŸãã çŸåšã®ãã€ã³ããšã¿ãŒã²ãããã€ã³ããè£éãããããããã¹ã ãŒãºãã©ããã³ã°ã«ã¡ã©ãã®å¹æãåŸãããŸãã
éåºŠã®æèŠãäžããããã«ãè¹ã®å éã§ãã«ã¡ã©ã®èŠéã¯ãããã«å¢å ããŸãããæžéããªãããããã«å¿ããŠæžéããŸãã
ããªãã¯è¹ãäžå¿«ã«ã²ãã€ãæ§åãèŠãããšãã§ããŸãã ããã¯ãè¹ã®åäœèšå®ã§è£éãæå¹ã«ããããšã§è§£æ±ºããŸãããééãåãã
空ã®é»ãã¹ããŒã¹ã§ã®ç§»åã¯ãã©ããããããé¢çœããªãã ãããã£ãŠã次ã®ã¹ãããã¯ãå®å®ããªããžã§ã¯ãã§æºããããšã§ããã
ãã®èšå®ã§ã¯å°ææåž¯ãã²ãŒã ã®äŒå Žã§ãã£ããããã¿ã¹ã¯ã¯éåžžã«ç°¡åã«è§£æ±ºãããŸãããæ°çŸç«æ¹ããã¡ãŒãã«ã®ã¹ããŒã¹ã«ãæ°çŸã®å°ææãã©ã³ãã ã«æ£ãã°ã£ãŠããŸããã ã©ã³ãã çæã®ã·ãŒãã¯äºåã«ä¿åãããŠãããããããŒã¹ãŸãã¯ã¯ãšã¹ãã¢ã€ãã ãå°ææå
ã«ããããšãå¿é
ããå¿
èŠã¯ãããŸããã§ããã
é ãããã¯ãããªæãã§ãã倧ããªã掻æ°ããšãã€ãããºã ã®ããã«ã倧ããªå°ææã«å ããŠãå°ããªãã¹ã¿ãŒãã¹ããã远å ãããŸããã ãããã®ããããªããšã¯ãå Žæå
šäœã§ã¯ãã¯ãçæãããŸããã§ããããç§»åããè¹ã®åšãã«çŽæ¥äœæãããŸããã
å°ææããªãã¢ãžã§ãã¬ãŒã¿ãŒã³ãŒãpublic class MiniAsteroids : MonoBehaviour { private Transform tx; private GameObject[] asteroids = new GameObject[155]; public GameObject[] prefabs = new GameObject[2]; public int asteroidsMax = 100; public float asteroidSize = 1; public float asteroidDistance = 10; public float asteroidClipDistance = 1; private float asteroidDistanceSqr; private float asteroidClipDistanceSqr; private ParticleSystem pSystem; private int updateEvery = 5; private int counter = 0; GameObject root; void Start() { root = new GameObject(); root.transform.position = Vector3.zero; root.name = "Small Asteroid Field"; tx = transform; asteroidDistanceSqr = asteroidDistance * asteroidDistance; asteroidClipDistanceSqr = asteroidClipDistance * asteroidClipDistance; pSystem = GetComponent<ParticleSystem>(); } private void CreateStars() { for (int i = 0; i < asteroidsMax; i++) { asteroids[i] = Instantiate(prefabs[Random.Range(0, prefabs.Length - 1)]) as GameObject; asteroids[i].transform.position = Random.insideUnitSphere * asteroidDistance + tx.position; asteroids[i].transform.parent = root.transform; asteroids[i].GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * 2f; } } void Update() { counter++; if (asteroids[0] == null) CreateStars(); if (counter == updateEvery) { counter = 0; for (int i = 0; i < asteroidsMax; i++) { if ((asteroids[i].transform.position - tx.position).sqrMagnitude > asteroidDistanceSqr) { asteroids[i].transform.position = Random.insideUnitSphere.normalized * asteroidDistance + tx.position; asteroids[i].GetComponent<Rigidbody>().velocity = Vector3.zero; } } } } }
è¹ãæŠè£
ããŸã
ã¡ã€ã³ãã£ã©ã¯ã¿ãŒã®è¹ã¯ã6ã€ã®ãµã¹ãã³ã·ã§ã³ãã€ã³ãã§æŠåšãéã¶æ©äŒãäžããããšã«æ±ºããŸããïŒéæŠè£
ããæŠéæ©ã«ã¯2ã€ãŸãã¯4ã€ã®ãã€ã³ãã¯å
ãããŸãïŒã ã¢ãŒã ã®ã¢ã¿ããã¡ã³ããã€ã³ãã¯GameObjectsãããŒã䜿çšããŠèšå®ããããµã¹ãã³ã·ã§ã³ã®ãã€ã³ãæ°ã¯ããŒãã³ãŒãã£ã³ã°ãããŸããïŒã¯ããæãæ¹ããŸããïŒã åæã«ããµã¹ãã³ã·ã§ã³ãã€ã³ãã¯2ã€ã®ã¿ã€ãã«åããããŸãã-ã¡ã€ã³ãŠã§ãã³ãšè£å©ã åºæ¬çã«1ã€ã®éãããããŸãã-ã¡ã€ã³ã¹ãããã®æŠåšã¯LMBã§ã远å ã®æŠåšã§ã¯-ã¹ããŒã¹ããŒã§æå¹ã«ãªããŸããã æŠåšã¯ãåºæ¬çãªæ©èœãžã®ã¢ã¯ã»ã¹ãæäŸããã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠãæ°ããçš®é¡ã®æŠåšãç°¡åã«è¿œå ã§ããããã«ãããšãããéåžžã«éå®çãªè¹ãšã®ããåããè¡ããŸããã ããã«ãéçºæã«ãã¹ãã¢ãšæ ŒçŽåº«ã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ã®å€èгãæ
åœããããã€ãã®æ©èœã远å ãããŸããã
ã€ã³ã¿ãŒãã§ãŒã¹ interface IWeapon { void Shoot(Transform target); void Refill(); int GetAmmoNum(); void SetAmmoNum(int n); Vector3 GetJointOffset(); string GetWeaponName(); string GetWeaponTitle(); string GetWeaponDesc(); int GetWeaponPrice(); Vector3 GetGUIRotation(); Vector3 GetGUIScale(); }
åãäžããããæŠåšãæã€è¹ã®æåã®ã¹ã¯ãªãŒã³ã·ã§ããã®1ã€åèšã§ã5çš®é¡ã®æŠåšã補é ãããŸããã2éç ²ãã¬ãŒã¶ãŒãèªå°ãããŠããªãããµã€ã«ãéãããŒãã³ã°éé·ãããŒãã³ã°ããµã€ã«ã§ãã
ã¿ãŒã²ãããåãæ¹åã«åãé床ã§ç§»åãããšä»®å®ããŠã粟床ãé«ããããã®ããŒãã³ã°ããµã€ã«ããªãŒããã€ã³ããèšç®ããŸããã ååãšããŠãããã¯ããµã€ã«ãããªãé«ã確çã§åããŠããã¿ãŒã²ããã«ãããããã®ã«ååã§ããã
ã¬ã€ãä»ãããµã€ã«ã¹ã¯ãªããã³ãŒã public class GuidedRocket : MonoBehaviour { public float selfDestructTime = 5f; public float safetyDelay = 0.5f; public float damageRadius = 6f; public int damage = 120; public float acceleration; public float steerCoef = 0.09f; float maxSpeed = 10f; public Collider col; bool armed = false; public Transform smoke; public GameObject explosion; public GameObject target; Vector3 estimatedPosition; Vector3 targetVelocity; Rigidbody targetBody; public Vector3 fwd = -Vector3.up; public Vector3 fixAngle = new Vector3(-90, 0, 0); float startSpeed; bool first = true; Rigidbody body; public LayerMask hitMask; void Start() { Invoke("SelfDestruct", selfDestructTime); Invoke("Arm", safetyDelay); body = GetComponent<Rigidbody>(); } void FixedUpdate() { if (first) { first = false; startSpeed = transform.InverseTransformDirection(GetComponent<Rigidbody>().velocity).magnitude; maxSpeed = startSpeed * 2; if (target != null) { targetBody = target.GetComponent<Rigidbody>(); } } Vector3 fwdDir = transform.TransformDirection(fwd); if (armed) { startSpeed += Time.deltaTime * acceleration; if (target != null) { Vector3 enemyPos = target.transform.position; Vector3 dir = enemyPos - transform.position; if (targetBody != null) { float distance = dir.magnitude; Vector3 tgVel = targetBody.velocity; estimatedPosition = target.transform.position + (distance / startSpeed) * tgVel;
以äžã¯ã2çš®é¡ã®æŠåšã®åäœã®ãããªã§ãã ãããªã«ã¯æµã®ç Žå£ã®å¹æã瀺ãããŠããŸãããããã¯éåžžã«åçŽãªã®ã§ãå¥ã«èª¬æããŸããã
ã€ã³ã¿ãŒãã§ãŒã¹
ã€ã³ã¿ãŒãã§ã€ã¹ã«è²»ãããæéã¯äºæ³å€ã«éåžžã«éèŠã§ããããšã倿ããã€ã³ã¿ãŒãã§ã€ã¹ã®éçºã«ã¯å°ãªããšã3æ¥ããããŸããã Unity 4.6ã«ç»å ŽããUIã·ã¹ãã ã䜿çšããŸããããç§ã®æèŠã§ã¯ãããã¯éåžžã«äŸ¿å©ã§ãåŠã¶ã®ã¯ããªãç°¡åã§ãã
ã€ã³ã¿ãŒãã§ã€ã¹ã§ã®äœæ¥ã®äžã§æãé£ããéšåã¯ããŒã¹ã€ã³ã¿ãŒãã§ã€ã¹ã§ãããéåžžã«å€ãã®æ©èœãå®è£
ããå¿
èŠããããŸããã å¯Ÿè©±ãæŠåšã®è³Œå
¥/販売ãããŒã«ãããã®ã¢ã€ãã ã®è²©å£²ãä¿®çã 貚ç©/æŠåšã¢ã€ã³ã³ãšããŠãã¢ã€ã³ã³ãæç»ããæéãååã«ãªãã£ããããçŽäº€æåœ±ã®ã¢ãã«ã䜿çšãããŸããã ã¢ã€ãã ããšã«çã説æããŸãšãããããã¬ãŒã€ãŒã®åã«äœãããããäŒããŸããã
ã€ã³ã¿ãŒãã§ã€ã¹ã®æåã®ããŒãžã§ã³ãã«ãŒããã¿ã¹ã¯ã¿ããªãåŸã«ãã€ã³ã¿ãŒãã§ãŒã¹ã¯ã°ã©ãã£ã«ã«ã«æŽç·ŽããïŒåœŒã®ããã«ã¹ãã©ã€ããæäŒã£ãŠããã人ã®ãããã§ãç§èªèº«ã¯æ±ºããŠã§ããªãã£ãã§ãããïŒãé¡èã«ãããããã§ãããã«ãªãå§ããŸããã
æçµããŒãžã§ã³ã§ã¯ãæ¬è³ªã¯åãã§ãããç®ã楜ããŸããŠãããŸããé£è¡ã€ã³ã¿ãŒãã§ãŒã¹ãããç°¡åã«ãªããŸããã ãã¬ã€ã€ãŒã¯å®éã«ã¯åœŒãšã¯äžå察話ãããããèªäœã§åœŒã¯ããªããããã«ã§ãã ããã°ã¬ã¹ããŒã«ã¯ãéåžžã®ã¹ãã©ã€ãã䜿çšãããUnityã䜿çšããŠ9ã€ã®éšåã«ã«ãããããéåžžã«ç°¡åãã€éåžžã«ãããã«æ°Žå¹³ã«åŒã䌞ã°ãããŸããã ã¹ã³ãŒãã®åŽé¢ã«æ¹Ÿæ²ããããŒããããšããã¹ãŠãããè€éã«ãªããŸãã 軞ã®1ã€ã«æ²¿ã£ãŠã¹ãã©ã€ããã¹ãã¬ããããã ãã§ã¯æ©èœããŸãããããè€éãªãœãªã¥ãŒã·ã§ã³ã䜿çšããå¿
èŠããããŸãã åçŽãªã·ã§ãŒããŒã¯ãã«ãããªãã®é«ããšãã1ã€ã®ãã©ã¡ãŒã¿ãŒã§èšè¿°ãããŠããŸãã ã¹ã¯ãªããããèšå®ãããããã«å¿ããŠãã¹ãã©ã€ãã¯ç®çã®å¡ãã€ã¶ãã§æç»ãããŸããã
ã·ã§ãŒããŒã³ãŒãShader "Custom/CrosshairShader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Angle ("Angle (Float)", Float) = 0
_Color ("Tint", Color) = (1.0, 0.6, 0.6, 1.0)
}
SubShader {
Tags{"Queue" = "Transparent" }
Pass {
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform float _Angle;
uniform fixed4 _Color;
float4 frag(v2f_img i) : COLOR
{
float4 result = tex2D(_MainTex, i.uv);
float angle = i.uv.y;
if(angle > _Angle)
{
result.a = 0;
}
return result*_Color;
}
ENDCG
}
}
}
ãã©ã€ãã€ã³ã¿ãŒãã§ãŒã¹ã®ã¹ã¯ãªãŒã³ã·ã§ããïŒ
ã¹ã¯ãªãŒã³ã·ã§ããã¯ãç»é¢ã®äžå€®ã«ååæºãããããã«ã¹ã€ã³ãžã±ãŒã¿ã瀺ããŠããŸãçžæ
ç§ã®æèŠã§ã¯ãã²ãŒã ã®åŒ±ç¹ã®1ã€ã§ãã 圌ãã¯ãã äžã€ã®æŠè¡ãæã£ãŠããŸã-ãã¬ãŒã€ãŒã圌ãã®èŠéã«å
¥ã£ãŠããŠãå°æã®è·é¢ã«è¿ã¥ãããããã¬ãŒã€ãŒã®åŸã«é£ã¶ããšã¯ãå°æãå§ããŸãã ããã«ãããããããå€ãã®å Žåããã®ãããªæµã§ããæ·±å»ãªå±éºããããããŸãã
ãã¡ãããäžèšã®åäœã«å ããŠãè£å©æ©èœããããŸããã ããšãã°ããã¬ãŒã€ãŒã®èŠçã倱ã£ã圌ãã¯ã圌ãèŠãæåŸã®ãã€ã³ããŸã§é£ãã§ãããã§åœŒãèŠã€ããããªãã£ããã©ã³ãã ã«ããŸããå§ããããŸãã¯éå§ãã€ã³ãã«æ»ã£ãã ããã§ãã圌ãã¯å°ææãšã®è¡çªãæã
é¿ããããããã¯åœŒããããŸãã«éãé£ã°ãªãã£ãå Žåã ãã ã æµã®AIçšã®æ¬æ Œçãªã¹ããŒããã·ã³ã¯ãã®ããã«ã¯å®è£
ãããŠããŸããã§ãããAIã¹ã¯ãªããã¯0.1ç§ããšã«ãã¹ãéå§ããæ¬¡ã®0.1ç§ã§æµãäœãããããæ±ºå®ããŸããã ãã®ãããå€ããå°ãªãã蚱容ã§ããåäœãå®çŸããããã«ãAIã®ç¶æ
ãèšè¿°ããå€ãã®è¿œå 倿°ãéå§ããå¿
èŠããããŸããã

ã¡ã€ã³ãã¹ã¯å®å
šã«ç¡é²åã§ããã圌ã®èšå€§ãªæ°ã®æäžã ãã«é Œã£ãŠããŸããã
ã¯ãšã¹ã
ãã以åã¯ãã¯ãšã¹ãã·ã¹ãã ãå®è¡ããããšããªãã£ããããã©ãããå§ããã°ããã®ãããããŸããã§ããã ããããæšè«ããæéãã¬ãã¹ã³ãæ¢ãæéã¯ãããŸããã§ãããè¡åããå¿
èŠããããŸããã2é±ç®ãç¶ããŠããããã§ãïŒ ãã®çµæãããŒãã³ãŒãåãããã¯ãšã¹ãã®ãªã¹ããåããéåžžã«systemãã·ã¹ãã ãçãŸããŸããïŒæ°ããã¯ãšã¹ãã远å ããã«ã¯ãã¡ã€ã³ã¯ãšã¹ãã¹ã¯ãªããã®å€æ°ã«ãã®ååãæžããã¯ãšã¹ãã®æ°ã1ã€å¢ãããã¯ãšã¹ããåç
§ããããŒã¹ãæå®ããå¿
èŠããããŸãïŒããã€ã¢ãã°ã®åºå®æ°ã®åçãªãã·ã§ã³ïŒ3ããŒã¹ïŒãããã³ã¬ãŒããžã£ã³ãã®ãã®ä»ã®å
åããããŸãã
ãã€ã¢ãã°ã¯xmlã«ä¿åãããŸãããç·šéã®ããã«ãUnityã®åãå Žæã§ç°¡åãªãšãã£ã¿ãŒãäœæãããŸããã
ãšãã£ã¿ãŒã¯ããããã¯ãšã¹ãã·ã¹ãã ã®æãåªããéšåã§ããã¯ãšã¹ãèªäœã¯ãã¬ããã«ãã£ãŠäœæããããã¬ããã¯ã¯ãšã¹ãã®èµ·åæã«ã€ã³ã¹ã¿ã³ã¹åãããè³ãåãåã£ãåŸã«åé€ãããŸããã æ²ãã£ãŠããŸãããããŸããããŸããã ã¯ãšã¹ãã·ã¹ãã ããã€ã¢ãã°ã®äœæãããã³ã¯ãšã¹ãèªäœã¯ããã«3æ¥éããããŸããã ç· ãåãã¯éè¿ã«è¿«ã£ãŠããŸããã
ãã®ä»ã®ããããªããš
ããã§ã¯ãå¥ã®ã»ã¯ã·ã§ã³ã«å€ããªãããŸããŸãªãããããªã¹ãããããšæããŸãããããã§ãããã«ã€ããŠã話ãããããšæããŸãã
å€åããã€ããŒãžã£ã³ãã³ã°ã®å¹æããå§ããŸãããã ã©ã®ããã«èŠãããã以äžãèŠãããšãã§ããŸãã
éåžžã«ç°¡åã«å®è£
ãããŸãã æåã«ãµãŠã³ããéå§ããã«ã¡ã©ãæ¯ã£ãŠãã¡ã€ã³ã¢ãã«ã®äžã«åãè¹ã®ãããã«æ¡å€§ããã¢ãã«ã衚瀺ããŸãããããšãã«ã®ãŒãã£ãŒã«ããã®ãã¯ã¹ãã£ã䜿çšããŠãã¢ãã¡ãŒã·ã§ã³ã«ãŒãã§ã¢ãã¡ãŒã·ã§ã³åãããžã£ã³ãã®åã«ããŒãã£ã¯ã«ãã©ãã·ã¥ã·ã¹ãã ãèµ·åããŠã¡ã€ã³ã¢ãã«ãé衚瀺ã«ããŸãã ãäœäºç®ã广ã®ããã«ãããããŸããã£ãããã«æããŸãã
ãŸããä¿åã·ã¹ãã ã«ã€ããŠå°ã説æããããšæããŸãã å¥åŠãªããšã«ã圌女ã¯ã²ãŒã ã«åå ããŠããŸãã ãã¬ãŒã€ãŒã®ååãå«ãxmlãã¡ã€ã«ã¯ã²ãŒã ãã©ã«ããŒã«ä¿åããããã¬ãŒã€ãŒã®ååèªäœã¯PlayerPrefsïŒã¬ãžã¹ããªå
ïŒã«ä¿åãããŸãã çè«çã«ã¯ãã¡ã€ã³ã¡ãã¥ãŒã§ãã¬ãŒã€ãŒã®ååã倿Žããããšã§ãè€æ°ã®ä¿åã䜿çšããããšãã§ããŸãã ã¯ãšã¹ããå®äºãããã³ã«ãä¿åã¯èªåçã«è¡ãããŸãã
éåžžã«ç°¡åã«å®è£
ãããŸãïŒSaveInfoã¯ã©ã¹ãäœæãããã²ãŒã ã®å¿
èŠãªãã¹ãŠã®ç¶æ
ãã©ã¡ãŒã¿ãŒãä¿åãããŸãããã®ã¯ã©ã¹ã¯ãæšæºCïŒããŒã«ã䜿çšããŠããŒã¿ãxmlãã¡ã€ã«ã«ã·ãªã¢ã«å/éã·ãªã¢ã«åãã2ã€ã®ã¡ãœããLoadïŒïŒããã³SaveïŒïŒãå®è£
ããŸã
ããŒãããŠä¿å public void Save(string path) { var serializer = new XmlSerializer(typeof(SaveInfo)); using (var stream = new FileStream(path, FileMode.Create)) { serializer.Serialize(stream, this); stream.Close(); } } public static SaveInfo Load(string path) { var serializer = new XmlSerializer(typeof(SaveInfo)); using (var stream = new FileStream(path, FileMode.Open)) { return serializer.Deserialize(stream) as SaveInfo; } }
ããã ãã§ããä»ã«äœãããå¿
èŠã¯ãããŸããããã®ã¯ã©ã¹ã®ãã£ãŒã«ããè§£æããã ãã§ãã
ãã¡ã€ã«ãä¿å <?xml version="1.0" encoding="windows-1251"?> <SaveInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <name>Mingebag</name> <money>150</money> <health>460</health> <maxHealth>500</maxHealth> <maxcargo>2500</maxcargo> <maxSpeed>25</maxSpeed> <acceleration>3</acceleration> <yawPitchFactor>1.99</yawPitchFactor> <rollFactor>1.98</rollFactor> <wS1Name>Machinegun</wS1Name> <wS1Num>0</wS1Num> <wS2Name>Machinegun</wS2Name> <wS2Num>0</wS2Num> <auxName> <string>GuidedLauncher</string> <string>NursLauncher</string> <string>NursLauncher</string> <string>GuidedLauncher</string> </auxName> <auxNum> <int>6</int> <int>18</int> <int>18</int> <int>9</int> </auxNum> <spawnInNextScene>false</spawnInNextScene> <spawnPositionIndex>0</spawnPositionIndex> <spawned>true</spawned> <hasActiveQuest>false</hasActiveQuest> <base1QuestNum>0</base1QuestNum> <base2QuestNum>0</base2QuestNum> <InventoryItems> <Item> <name>Equipment3</name> <title> </title> <desc> , .</desc> <weight>300</weight> <quantity>1</quantity> <price>100</price> </Item> <Item> <name>Equipment2</name> <title> </title> <desc> . </desc> <weight>150</weight> <quantity>1</quantity> <price>100</price> </Item> <Item> <name>Debris</name> <title> </title> <desc> . </desc> <weight>50</weight> <quantity>1</quantity> <price>10</price> </Item> </InventoryItems> </SaveInfo>
ãããã£ãŠãã²ãŒã ãé²ããã®ãé¢åãªå Žåã¯ãä¿åããŠé²è¡ãå éããããæŠåšããã匷åã«ãããããããšãã§ããŸãã
ãŸããã²ãŒã ã®ã°ã©ãã£ãã¯ã³ã³ãã³ãã®éçºãæäŒã£ãŠãããéçºããã»ã¹ã®ããããåè¯ãªäººã
ã«ãæè¬ããããšæããŸãã ãã®éãèãããšïŒæ°åã®ã¢ãã«ã®ã¿ïŒãç§ã¯ãããæééãã«æãŸããããšãã§ãããšã¯æãããå質ã«ã€ããŠè©±ãå¿
èŠã¯ãããŸããã ãã®çµæãã²ãŒã å
ã®ã»ãšãã©ãã¹ãŠã®ã°ã©ãã£ãã¯ã¹ïŒ2ã€ã®èæ¯ãšã¹ã«ã€ããã¯ã¹ãé€ãïŒã¯ããã®ã²ãŒã å°çšã«äœæãããŸããã
ãŸãšã
ã²ãŒã ã®äœæ¥ãçµäºããŠããå幎以äžãçµéããŠãããåšåº«ã確èªããæãæ¥ãŸããã
ç§ã¯ãã®ã²ãŒã ã§æåªç§è³ãç²åŸããŸããã§ãããã©ããããã¯ã»ã«ã¢ãŒãã¢ããã³ãã£ãŒã®ãã¬ã³ãã«åå ã§ããªãã£ãããã§ãã ããããã²ãŒã ã®äœæ¥äžã«éåžžã«å€ãã®è²Žéãªçµéšãšã¹ãã«ãåŸããã远ãè¶ãããã¬ãŒãããã®ãã³ãã¯ãããã€ãã®ããšã¯äŸ¡å€ããªãããšãé·ãéæãåºãããŸãã
çµè«ïŒ
- ãã¡ãããåºå€§ããåãå
¥ããããšã¯å¯èœã§ãããç· ãåããå³ããå Žåã¯ãããããªãæ¹ãè¯ãã§ãããã
- ã²ãŒã å
ã®ããããã¯æåŸã®ãã®ã§ã¯ãªããäºåã«äœæ¥ãã䟡å€ããããŸã
- ãã¬ãŒã€ãŒãå¿
ãããå°éããªãã°ãªããã®å€ãæ©èœãããå®è£
ãããæ©èœã®ã»ããå°ãªãã
- æããªçžæã¯æ¬æè
ã«é©ããŠããŸãã圌ãã®æ°ãå°ãªãã²ãŒã ã§ã¯ãè³¢ãããæ¹ãè¯ãã§ã
- ãã©ã³ã¹ãéèŠã§ãããæéãããã䟡å€ããããŸãã
- æé©åã¯éèŠã§ãããäºåã«æ€èšããå¿
èŠããããŸãã
ãã¡ãããç§ã®çµè«ã®å€ãã¯æçœã«æãããããããŸããããæã«ã¯è©ŠããŠã¿ãªããšçè§£ã§ããªãã§ãããã ããšãã°ããããžã§ã¯ããã§ããã ãè€éã«ããããšããæ¬²æ±ã¯ãåå¿è
ã®éçºè
ãç¯ãæãäžè¬çãªééãã®1ã€ã§ãã ç§ããã®åé¡ãåé¿ã§ããŸããã§ããã
æåŸã«ãã²ãŒã ã®ã²ãŒã ãã¬ã€ãããªã玹ä»ããŸãã ãã®äžã§ãæçµçã«äœãèµ·ãã£ããã倧ãŸãã«è©äŸ¡ã§ããŸãã
ãã®èšäºãäœããã®åœ¢ã§ããªãã®åœ¹ã«ç«ã€ããšãé¡ã£ãŠããŸããå°ãªããšããå¥ã®å°ããªã²ãŒã ã®éçºã®æŽå²ãç¥ãããšã¯è峿·±ããã®ã§ããã
ãã«ããžã®ãªã³ã¯ïŒ
yadi.sk/d/j-v8WoyCiaNuQGitHubãªããžããªãžã®ãªã³ã¯ïŒã³ã³ãã¹ããã»ãšãã©ä¿®æ£ãããªãã£ãåŸã®çã®ã³ãŒããããã³ãã¹ãŠãæ¥ãã§æžããããããçç ã¯ããã«ãã£ã±ãã§ãïŒ
github.com/TxN/TWG6-Spacesim