ãUnity åå¿è åãããªããžã§ã¯ãã®ç§»åâ¡ | ããŒå ¥åã§èªç±ã«ãªããžã§ã¯ããåããæ¹æ³
ååã¯ãtransform.position ã®å€ã倿Žãããšãªããžã§ã¯ããç§»åããããšã確èªããŸããã
ããšãã°ã次ã®ããã«æžããšããªããžã§ã¯ãã¯å³æ¹åãžåãç¶ããŸãã
transform.position += Vector3.right * speed * Time.deltaTime;ãã ãããã®ãŸãŸã§ã¯ã²ãŒã ãéå§ããç¬éããåæã«åããŠããŸããŸãã
ã²ãŒã ã§ã¯ã
å³ããŒãæŒãããå³ãžç§»åãã
å·ŠããŒãæŒãããå·Šãžç§»åãã
äžããŒãæŒãããäžãžç§»åãã
äžããŒãæŒãããäžãžç§»åãã
ãšããããã«ããã¬ã€ã€ãŒã®å ¥åã«å¿ããŠç§»åããæ¹åãå€ããããšããããããŸãã
ä»åã¯ãããŒå
¥åã䜿ã£ãŠãªããžã§ã¯ããäžäžå·Šå³ã«åãããŠã¿ãŸãããã
åŸåã§ã¯ã4æ¹åã®åŠçããŸãšããŠãããæ±ããããç§»åæ¹æ³ã«çºå±ãããŸãã
1ïŒä»åäœããã®
ä»åã¯ãããŒããŒãã®ç¢å°ããŒã䜿ã£ãŠãªããžã§ã¯ããäžäžå·Šå³ã«ç§»åãããŸãã
æåã¯ã
Input.GetKey()ã䜿ã£ãŠãããŒãæŒãããŠãããã1ã€ãã€ç¢ºèªããŸãã
ããã«
Input.GetAxisRaw()ã䜿ã£ãŠãã©ã®æ¹åãžç§»åãããã®ãããæ°å€ãšããŠååŸããæ¹æ³ã確èªããŸãã
æçµçã«ã¯ã次ã®ãããªã³ãŒãã«ãªããŸãã
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
Vector3 direction = new Vector3(x, y, 0).normalized;
transform.position += direction * speed * Time.deltaTime;å°ãé£ãããã«èŠããŸãããé çªã«ç¢ºèªããã°ããããããäœãããŠããã®ãåããããã«ãªããŸãã
2ïŒããŒå ¥åç§»åã®ããã°ã©ã
2-1ïŒå³ããŒãæŒãããšãã ãç§»åãã
ãŸãã¯ç°¡åãªãšããããå§ããŸãããã
ååäœæããã¹ã¯ãªããã䜿ã£ãŠãå³ç¢å°ããŒãæŒããŠããéã ãå³ãžç§»åããããã«ããŸãã
using UnityEngine;
public class ObjectMove : MonoBehaviour
{
public float speed = 3f;
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
}
}
}
ã²ãŒã ãå®è¡ããŠãããŒããŒãã®å³ç¢å°ããŒãæŒããŠã¿ãŸãããã
ããŒãæŒããŠããéã ãããªããžã§ã¯ããå³ãžç§»åããŸãã
2-2ïŒInput.GetKeyãšã¯
ä»åç»å Žããã®ãã以äžã®ã³ãŒã
Input.GetKey()Input.GetKey()ã¯ãæå®ããããŒãçŸåšæŒãããŠããããã調ã¹ãåœä»€ã§ãã
ä»åã¯ã
Input.GetKey(KeyCode.RightArrow)ãšããŠããŸãã
KeyCode.RightArrowã¯ãããŒããŒãã®å³ç¢å°ããŒã衚ããŠããŸãã
å³ç¢å°ããŒãæŒãããŠããã° trueãæŒãããŠããªããã° false ã«ãªããŸãã
ãã®ããã
if (Input.GetKey(KeyCode.RightArrow))ã§ã¯ãå³ç¢å°ããŒãæŒãããŠãããšãã ã if ã®äžã®åŠçãå®è¡ããããšããæå³ã«ãªããŸãã
Input.GetKey()ã§éèŠãªã®ã¯ãããŒãæŒããŠããéãäœåºŠãtrueã«ãªãããšããç¹ã§ãã
Update()ã¯ã²ãŒã äžãç¹°ãè¿ãå®è¡ãããŠããŸãã
ãã®ããã
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
}ãšãããšãå³ããŒãæŒããŠããéã
å°ãå³ãžç§»å
â
å°ãå³ãžç§»å
â
å°ãå³ãžç§»å
â
å°ãå³ãžç§»åãšããåŠçãç¹°ãè¿ãããŸãã
çµæãšããŠããªããžã§ã¯ããæ»ããã«å³ãžåããŸãã
2-3ïŒVector3.rightãšã¯
ååã¯ã
new Vector3(1, 0, 0)ã®ããã«ãXã»Yã»Zãæå®ããŠç§»åæ¹åãäœããŸããã
Unityã«ã¯ãããäœ¿ãæ¹åãæåããçšæãããŠããŸãã
ä»åç»å Žãã
Vector3.rightã¯å³æ¹åã衚ãã³ãŒãã§ã
new Vector3(1, 0, 0)ãšåãæ¹åã衚ããŸãã
Xæåããã©ã¹ã®å€ãªã®ã§ã峿¹åã«ãªããŸãã
2-4ïŒãã®ä»ã®æ¹åãçšæãããŠãã
Unityã«ã¯ã峿¹åã ãã§ãªããã»ãã®æ¹åãçšæãããŠããŸãã
峿¹åã¯äžã§ç¢ºèªããéã
Vector3.right
new Vector3(1, 0, 0)å·Šæ¹åã¯
Vector3.left
new Vector3(-1, 0, 0)UnityEditorã®ããŒãžã§ã³ã«ãã£ãŠã¯ãVector3.left ã䜿ããªãå ŽåããããŸãã
ãã®æã¯ä»¥äžã®ããã«æå®ããŸãã
-Vector3.rightäžæ¹åã¯
Vector3.up
new Vector3(0, 1, 0)äžæ¹åã¯
Vector3.down
new Vector3(0, 1, 0)åæ¹åã¯
Vector3.forward
new Vector3(0, 0, 1)åŸæ¹åã¯
Vector3.back
new Vector3(0, 0, -1)ãã®ããã«ãããäœ¿ãæ¹åã¯Vector3ã«ãããããçšæãããŠããŸãã
2-5ïŒå·Šå³ã«åãããŠã¿ã
ããã§ã¯ãå·Šç¢å°ããŒã远å ããŠã¿ãŸãããã
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position += Vector3.left * speed * Time.deltaTime;
}
}ããã§ã
å³ç¢å°ã㌠â å³ãžç§»å
å·Šç¢å°ã㌠â å·Šãžç§»å
ãšãªããŸãã
2-6ïŒäžäžã®ç§»åã远å ãã
ããã«ãäžãšäžã远å ããŸãã
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position += Vector3.left * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.UpArrow))
{
transform.position += Vector3.up * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.position += Vector3.down * speed * Time.deltaTime;
}
}
ããã§ç¢å°ããŒã䜿ã£ãŠããªããžã§ã¯ããäžäžå·Šå³ãžèªç±ã«åãããããã«ãªããŸããã

çŸåšã®åŠçãæ¥æ¬èªã§èãããšã次ã®ããã«ãªããŸãã
å³ããŒãæŒãããŠããã
å³ãžç§»å
å·ŠããŒãæŒãããŠããã
å·Šãžç§»å
äžããŒãæŒãããŠããã
äžãžç§»å
äžããŒãæŒãããŠããã
äžãžç§»åéåžžã«åãããããæžãæ¹ã§ãã
ããŒå
¥åã®ä»çµã¿ãå匷ãããšãã¯ããŸããã®æ¹æ³ã§åãã確èªãããšçè§£ããããã§ãããã
ãã ããå°ãæ°ã«ãªããšããããããŸãã
æ¹åãå¢ãããã³ã«ã
if (...)
{
transform.position += ...
}
ãšããåŠçã远å ããªããã°ãªããŸããã
ããã§æ¬¡ã¯ãå
¥åãããæ¹åãæåã«ãŸãšããŠäœãæ¹æ³ ãèããŠã¿ãŸãããã
3ïŒç§»åæ¹åã®æ°å€å
3-1ïŒãã©ã¡ããžåããããããæ°å€ã§ååŸ
å·Šå³ã®å
¥åããæ°å€ã§è¡šããŠã¿ãŸãã
å³ãžç§»åãããå Žåã¯ã
X = 1å·Šãžç§»åãããå Žåã¯ã
X = -1ã©ã¡ããæŒããŠããªãå Žåã¯ã
X = 0ãšèããããšãã§ããŸãã
åãããã«äžäžãã
äž â Y = 1
äž â Y = -1
å
¥åãªã â Y = 0ãšèããããŸãã
ã€ãŸãããã¬ã€ã€ãŒã®å ¥åããã
Xæ¹åã®å€
Yæ¹åã®å€ãååŸã§ããã°ã
new Vector3(x, y, 0)ãšããŠç§»åæ¹åãäœãããšãã§ããŸãã
ããã§äœ¿ããã®ãã
Input.GetAxisRaw()ã§ãã
ã²ããã»ã¢ã¯ã·ã¹ã»ããŠããšèªã¿ãŸãã

3-2ïŒInput.GetAxisRaw("Horizontal")
ãŸããæ¬¡ã®ã³ãŒããæžããŠã¿ãŸãããã
float x = Input.GetAxisRaw("Horizontal");Horizontalã¯ã暪æ¹åã®å
¥åãååŸããããã«äœ¿ããŸãã
åºæ¬çã«ã¯ã
å³ â 1
å·Š â -1
å
¥åãªã â 0ãšããå€ãååŸã§ããŸãã
ãã®ããã
float x = Input.GetAxisRaw("Horizontal");ãšãããšã暪æ¹åãžã®å ¥åã x ãšãã倿°ã«ä¿åã§ããŸãã
3-3ïŒInput.GetAxisRaw("Vertical")
äžäžæ¹åã¯ã
float y = Input.GetAxisRaw("Vertical");ã§ååŸã§ããŸãã
åºæ¬çã«ã¯ã
äž â 1
äž â -1
å
¥åãªã â 0ãšãªããŸãã
ããã§ã
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");ãšããããšã§ã暪æ¹åãšçžŠæ¹åã®å ¥åãããããååŸã§ããŸãã
è£è¶³
Input.GetAxis()ãšãã䌌ãåœä»€ããããŸãã
GetAxisRaw()ã¯å
¥åå€ãããã«-1ã»0ã»1ãžåãæ¿ãããŸãããGetAxis()ã¯å€ãåŸã
ã«å€åããŸãã
ä»åã¯ç§»åæ¹åãåããããã確èªãããããGetAxisRaw()ã䜿çšããŸãã
3-4ïŒå ¥åããVector3ãäœã
ååŸãã x ãš y ã䜿ã£ãŠãç§»åæ¹åãäœããŸãã
Vector3 direction = new Vector3(x, y, 0);ããšãã°å³ããŒãæŒããŠããå Žåã
x = 1
y = 0ãªã®ã§ã
new Vector3(1, 0, 0)ã«ãªããŸãã
ããã¯å³æ¹åã§ãã
äžããŒãæŒããŠããã°ã
x = 0
y = 1ãªã®ã§ã
new Vector3(0, 1, 0)ã«ãªããŸãã
ããã¯äžæ¹åã§ãã
ãã®æ¹æ³ã®äŸ¿å©ãªãšããã¯ã2ã€ã®ããŒãåæã«æŒããå Žåã§ãã
ããšãã°ãå³ããŒãšäžããŒãåæã«æŒããšã
x = 1
y = 1ãšãªããŸãã
ãã®ããã
new Vector3(1, 1, 0)ãšããæ¹åãã§ããŸãã
ããã¯å³äžæ¹åã§ãã
åãããã«ã2ã€ã®ããŒãåæã«æŒãããšãã¯æ¬¡ã®ããã«ãªããŸãã
å·Š ïŒ äž â (-1, 1, 0)
å³ ïŒ äž â (1, -1, 0)
å·Š ïŒ äž â (-1, -1, 0)ã€ãŸããå ¥åå€ããVector3ãäœãã ãã§ãæãæ¹åãèªç¶ã«æ±ãããšãã§ããŸãã
4ïŒæ°å€åããå€ã䜿ã£ãç§»å
4-1ïŒäœã£ãæ¹åãžç§»åãã
æ°å€åããæ¹åããååãšåãããã«transform.positionãžè¿œå ããŸãã
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
Vector3 direction = new Vector3(x, y, 0);
transform.position += direction * speed * Time.deltaTime;ããã ãã§ãäžäžå·Šå³ãšæãæ¹åãžç§»åã§ããŸãã
ããªãã³ãŒãããã£ããããŸããã
4-2ïŒæãç§»åã®åé¡
ããã§å®éã«åãããŠã¿ããšã1ã€åé¡ããããŸãã
å³ã ããæŒããå Žåã¯ã
new Vector3(1, 0, 0)ãšããããå³ãšäžãåæã«æŒããšã以äžã®ããã«ãªããŸãã
new Vector3(1, 1, 0)ãã®2ã€ã¯ãæ¹åã ãã§ãªã ãã¯ãã«ã®é·ã ãéããŸãã
(1, 1, 0) ã®ã»ããé·ãããããã®ãŸãŸç§»åã«äœ¿ããšãæãã«ç§»åãããšãã®ã»ããéããªã£ãŠããŸããŸãã
4-3ïŒnormalizedã§æ¹åã®é·ãããããã
ããã§äœ¿ãã®ãã.normalized ã§ãã
次ã®ããã«ããŸãã
Vector3 direction = new Vector3(x, y, 0).normalized;normalizedã䜿ããšãæ¹åã¯ãã®ãŸãŸã§Vector3ã®é·ãã1ã«ãããããããšãã§ããŸãã
ããšãã°ã
new Vector3(1, 0, 0)ã¯é·ã1ã§ãã
äžæ¹ã
new Vector3(1, 1, 0)ã¯ããã®ãŸãŸã§ã¯é·ãã1ãã倧ãããªããŸãã
.normalized ã䜿ãããšã§ãæãæ¹åã é·ã 1 ã«ããããããšãã§ããŸãã

ãã®çµæãäžäžå·Šå³ã§ãæãã§ããã»ãŒåãé床ã§ç§»åã§ããããã«ãªããŸãã
5ïŒå®æã³ãŒã
ä»åã®æçµçãªã³ãŒãã¯ãã¡ãã§ãã
using UnityEngine;
public class ObjectMove : MonoBehaviour
{
public float speed = 3f;
void Update()
{
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
Vector3 direction = new Vector3(x, y, 0).normalized;
transform.position += direction * speed * Time.deltaTime;
}
}æåã«äœã£ã4ã€ã® if ãšæ¯ã¹ããšãããªãçããªããŸããã
5-1ïŒã³ãŒããé çªã«èªãã§ã¿ã
ä»åã®ã³ãŒãã§ç¹ã«éèŠãªã®ã¯ãåŠçã3段éã«åããŠèããããšã§ãã
ãŸãã
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");ã§ããã¬ã€ã€ãŒãã©ã®ããŒãæŒããŠããããæ°å€ãšããŠååŸããŸãã
次ã«ã
Vector3 direction = new Vector3(x, y, 0).normalized;ã§ãååŸããå ¥åããç§»åããæ¹åãäœããŸãã
æåŸã«ã
transform.position += direction * speed * Time.deltaTime; ã§ãäœã£ãæ¹åãžå®éã«ãªããžã§ã¯ããç§»åããŸãã
ã€ãŸãã
ããŒå
¥å
â
ç§»åæ¹åãäœã
â
ãã®æ¹åãžç§»åãããšããæµãã«ãªã£ãŠããŸãã
ãã®èãæ¹ã¯ããããããã¬ã€ã€ãŒãæäœããã¹ã¯ãªãããäœããšãã«ãšãŠãéèŠã«ãªããŸãã
5-2ïŒGetKeyãäœ¿ãæ¹æ³ãšã®éã
æåã«äœã£ãã³ãŒãã§ã¯ã
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
}ã®ããã«ãããŒããšã«ç§»ååŠçãæžããŠããŸããã
äžæ¹ãGetAxisRawã䜿ã£ãæ¹æ³ã§ã¯ã
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
Vector3 direction = new Vector3(x, y, 0).normalized;ãšããŠãæåã«ç§»åæ¹åã1ã€äœã£ãŠããŸãã
ãããŠæåŸã«ã
transform.position += direction * speed * Time.deltaTime;ãšãç§»ååŠçã1åã ãè¡ã£ãŠããŸãã
Unityã«ãŸã æ £ããªããã¡ã¯ããŸãGetKeyã䜿ã£ãŠãããŒãæŒãããŠãããããã®æ¹åãžåããããšããä»çµã¿ãçè§£ããããšã倧åã§ãã
ãããããå ¥åããç§»åæ¹åãäœãããšããèãæ¹ãžçºå±ããããšãã³ãŒãã®æå³ãçè§£ãããããªããŸãã
21ïŒä»åã®ãŸãšã
ä»åã¯ãããŒããŒãã®å ¥åã䜿ã£ãŠãªããžã§ã¯ããèªç±ã«åããæ¹æ³ã確èªããŸããã

次åã¯ãtransform.positionãžçŽæ¥åº§æšã远å ããæ¹æ³ãšã¯å°ãéããTransform.Translate ã䜿ã£ãå¥ã®ç§»åæ¹æ³ã«ã€ããŠç¢ºèªããŠãããŸãã
ãã¡ãã¯Unityåå¿è
åãã®èšäºãããŒãå¥ã«ãŸãšããŠããŸãã
⌠Unityåå¿è
åãèšäºãŸãšãã¯ãã¡ã
ãã¡ãã®ãã¬ãžã³ãããã²ãŒã äœæè¬åº§ãå š8åã»ãããã§ãã·ãŒã³ã®åãæ¿ããªã©ã掻çšããŠãåå¿è ã§ãç¥èãŒãããäœããããã²ãŒã äœæè¬åº§ã玹ä»ããŠããŸãã

ããã«ã¹ãããã¢ããã®ãã¹ããã§éã¶ãžã£ã³ãã²ãŒã ã8åã»ãããã®ãã¬ãžã³ããã²ã掻çšãã ããã

ãã¡ã€ãããã¯ã¹ã§ã¯ãã¹ã¯ã©ãããUnityã®å奿å°ã®ãªã³ã©ã€ã³ã¬ãã¹ã³ãè¡ã£ãŠããŸãã
ãèå³ã®ããæ¹ã¯åœãµã€ãããªã³ã©ã€ã³ã¬ãã¹ã³ãããç¡æäœé𿿥ãžãåãåããäžããã
ãããªãšæã£ããå¿æŽãããïŒ
ãããããã°å¿æŽãé¡ãããŸãïŒ ããã ãããããã¯ã¯ãªãšã€ã¿ãŒãšããŠã®æŽ»åè²»ã«äœ¿ãããŠããã ããŸãïŒ