ãUnity åå¿è åãããªããžã§ã¯ãã®ç§»å†| Rigidbodyã«åãå ããŠåãã â AddForceç·š
ãããŸã§ãUnityã§ãªããžã§ã¯ããåããæ¹æ³ãããã€ã確èªããŠããŸããã
ååã¯ãRigidbody2D ã® linearVelocity ã䜿ã£ãŠããªããžã§ã¯ãã®é床ãçŽæ¥å€æŽããæ¹æ³ã確èªããŸããã
ä»åã¯ãé床ãçŽæ¥æ±ºããã®ã§ã¯ãªãããªããžã§ã¯ãã«åãå ããŠåããæ¹æ³ã確èªããŸãã
䜿çšããã®ã¯ãRigidbody2D ã® AddForce ã§ãã
rb.AddForce(Vector2.right * power);AddForce ã䜿ããšã
ãªããžã§ã¯ããæŒã
ãžã£ã³ãããã
ççºã§å¹ãé£ã°ã
ããã¯ããã¯ããã
ãšãã£ããç©çæŒç®ãããåããäœãããšãã§ããŸãã
ãããŠä»åã¯ããã®ããªããžã§ã¯ãã®ç§»åãã·ãªãŒãºã®æçµåã§ãã
æåŸã«ã¯ããããŸã§åŠç¿ããç§»åæ¹æ³ãæ¯èŒããªãããã©ã®ç§»åæ¹æ³ã䜿ãã°ããã®ãïŒã«ã€ããŠãæŽçããŠãããŸãã
1ïŒAddForceãšã¯
1-1ïŒAddForceã®äœ¿çšäŸ
AddForce ã¯ãRigidbody ã«åãå ããããã®åœä»€ã§ãã
2Dã®å Žåã¯ãRigidbody2D ã«å¯ŸããŠäœ¿çšããŸãã
äŸãã°ã次ã®ã³ãŒããèŠãŠã¿ãŸãããã
rb.AddForce(Vector2.right * power);ãã®ã³ãŒãã§ã¯ããªããžã§ã¯ãã«å³æ¹åã®åãå ããŠããŸãã
ããããã®éšåã確èªããŠã¿ãŸãããã
rb ã¯ãæäœãã Rigidbody2Dãåã®å€æ°ã§ãã
rbAddForce() ããRigidbody2Dã«åãå ããåœä»€ã§ãã
AddForce()Vector2.right ã¯å³æ¹åã衚ããŸãã
Vector2.rightãããŠãpower ãå ããåã®å€§ããã§ãã
Vector2.right * powerã€ãŸãããrb ã«å¯ŸããŠã峿¹åãž power åã®åãå ããããšããæå³ã«ãªããŸãã

1-2ïŒlinearVelocityãšã®éã
åå䜿çšãã linearVelocity ãšãä»åã® AddForce ã¯ãã©ã¡ãã Rigidbody2D ãåããããšãã§ããŸãã
ãã ããèãæ¹ã倧ããç°ãªããŸãã
ååã® linearVelocity ã§ã¯ãäŸãã°æ¬¡ã®ããã«æžããŸããã
rb.linearVelocity = new Vector2(
5f,
rb.linearVelocity.y
);ããã¯ã暪æ¹åã®é床ã5ã«ããããšããåœä»€ã§ãã
ã€ãŸããé床ãã®ãã®ãçŽæ¥æå®ããŠããŸãã
äžæ¹ãä»åã® AddForce ã¯ã
rb.AddForce(Vector2.right * power);ã®ããã«æžããŸãã
ãã¡ãã¯ã峿¹åãžåãå ããããšããåœä»€ã§ãã
é床ãçŽæ¥æå®ããŠããããã§ã¯ãããŸããã
åãå ããçµæãšããŠããªããžã§ã¯ãã®é床ãå€åããŸãã

2ïŒAddForceã䜿ã£ãŠåãããŠã¿ãã
2-1ïŒã¹ã¯ãªãããã¡ã€ã«ãäœæ
å®éã«ããªããžã§ã¯ããžå³æ¹åã®åãå ããŠã¿ãŸãããã
ã¹ã¯ãªãããã¡ã€ã«ïŒAddForceMove ãäœã£ãŠã次ã®ã³ãŒããå ¥åããŸãã
public class AddForceMove : MonoBehaviour
{
public Rigidbody2D rb; // Rigidbody2Dã³ã³ããŒãã³ããžã®åç
§
public float power = 5f; // åã®å€§ãã
void FixedUpdate()
{
// æ°Žå¹³æ¹åã®å
¥åãååŸ
rb.AddForce(Vector2.right * power);
}
}ãã®ã¹ã¯ãªããã§ã¯ã
rb.AddForce(Vector2.right * power);ãç¹°ãè¿ãå®è¡ããŠããŸãã
ãã®ããããªããžã§ã¯ãã«ã¯å³æ¹åã®åãå ããç¶ããŸãã

倿°ïŒrb ã«Rigidbody2Dã³ã³ããŒãã³ããã»ããããŠå®è¡ãããšãæåã¯ãã£ããåãå§ãããã®åŸã ãã ãé床ãäžãã£ãŠãããŸãã
ããããlinearVelocity ãšã®å€§ããªéãã§ãã
AddForce ã¯ãç§»åé床ãèšå®ããŠããã®ã§ã¯ãªããåãå ããŠãããšããç¹ãèŠããŠãããŸãããã
2-2ïŒãªãFixedUpdateã䜿ãã®ïŒ
ä»åã®ã³ãŒãã§ã¯ã
void FixedUpdate()
{
rb.AddForce(Vector2.right * power);
}ãšããŠããŸãã
ãããŸã§ãã䜿ã£ãŠãã Update ã§ã¯ãªããFixedUpdate ã䜿ã£ãŠããŸãã
FixedUpdate ã¯ãRigidbody ãªã©ã®ç©çæŒç®ãæ±ãåŠçã§ãã䜿çšãã颿°ã§ãã
Update ã¯ç»é¢ã®æç»ã«åãããŠå®è¡ããããããå®è¡åæ°ããã¬ãŒã ã¬ãŒãïŒ1ãã¬ãŒã ã«ãããæéïŒã«ãã£ãŠå€ãããŸãã
äžæ¹ãFixedUpdate ã¯äžå®ã®ééã§å®è¡ãããŸãã
ãã®ãããRigidbody ãžç¶ç¶çã«åãå ãããããªåŠçã§ã¯ã
FixedUpdate()ã䜿ããšæ±ãããããªããŸãã
ä»åã®ããã«ãæ¯åRigidbodyãžåãå ããåŠç㯠FixedUpdate ã«æžããŠãããšããã§ãããã
2-3ïŒåãå ãç¶ãããšé床ãå€ãã
FixedUpdate ã®äžã§ã
rb.AddForce(Vector2.right * power);ãå®è¡ãããšãäžå®ééã§åãå ããç¶ããŸãã
åŠçã®ã€ã¡ãŒãžã¯æ¬¡ã®ããã«ãªããŸãã
峿¹åãžåãå ãã
â
å°ãé床ãäžãã
â
ãŸã峿¹åãžåãå ãã
â
ããã«é床ãäžãã
â
ãŸãåãå ãã
â
ããã«é床ãå€åãããã®ããã«ãAddForce ã¯åãå ãããã³ã«Rigidbodyã®é床ãžåœ±é¿ãäžããŸãã
äŸãã°è»ã®ã¢ã¯ã»ã«ãæ³åãããšåãããããã§ãããã
ã¢ã¯ã»ã«ãèžãã ãããšãã£ãŠããããªãæé«é床ã«ãªãããã§ã¯ãããŸããã
åãå ããããšã§ãå°ããã€é床ãå€åããŸãã
AddForce ããããã«è¿ãèãæ¹ã§ãã

2-4ïŒMassã«ãã£ãŠåãæ¹ãå€ãã
Rigidbody2Dã«ã¯ãMass ãšããé
ç®ããããŸãã
Mass ã¯ãªããžã§ã¯ãã®è³ªéã衚ããŸãã
åã AddForce ã䜿ã£ãŠããŠããMass ã®å€ã«ãã£ãŠåãæ¹ãå€ãããŸãã
äŸãã°ã
rb.AddForce(Vector2.right * power);ãšããåãåãå ããå Žåã§ããMass ãå°ãããªããžã§ã¯ãã¯åãããããªããŸãã
äžæ¹ãMass ã倧ãããªããžã§ã¯ãã¯åãã«ãããªããŸãã
ã€ãŸããåãåãªãã軜ãç©äœã»ã©é床ãå€åãããããéãç©äœã»ã©é床ãå€åãã«ãããšããããšã§ãã
ããã¯çŸå®äžçã§ãåãã§ãã
軜ãããŒã«ãšéãç®±ãåãåã§æŒããå Žåã軜ãããŒã«ã®ã»ããç°¡åã«åããŸãã
AddForce ã䜿ããšããããã Rigidbody ã®ç©çèšå®ãåãã«åœ±é¿ããŸãã

3ïŒFoeceMode ã«ã€ããŠ
AddForce ã§ã¯ãåã®å ãæ¹ãæå®ããããšãã§ããŸãã
ãã®ãšãã«äœ¿çšããã®ãã
ForceMode2Dã§ãã
äŸãã°ã次ã®ããã«æžãããšãã§ããŸãã
rb.AddForce(
Vector2.right * power,
ForceMode2D.Force
);AddForce ã®2ã€ç®ã®åŒæ°ãšããŠã
ForceMode2D.Forceãæå®ããŠããŸãã
2Dã§ãã䜿ãã®ã¯ã次ã®2ã€ã§ãã
ForceMode2D.Force
ForceMode2D.Impulse
ForceMode2D.Impulseã§ãã
ãã®2ã€ã¯ãåã®å ãæ¹ãç°ãªããŸãã
3-1ïŒForce â åãå ãç¶ãã
ãŸãã¯ã
ForceMode2D.ForceForce ã¯ãç¶ç¶çã«åãå ãããããªåãã«åããŠããŸãã
ã€ã¡ãŒãžãšããŠã¯ããç©äœãã°ãŒããšæŒãç¶ããããšããæãã§ãã
äŸãã°ã
è»ãå éããã
å®å®è¹ãæšé²ããã
颚ã§ç©äœãæŒã
ãã£ã©ã¯ã¿ãŒãåŸã ã«å éããã
ãšãã£ãåãã«äœ¿ããŸãã
ãªãã
rb.AddForce(Vector2.right * power);ã®ããã«ã2ã€ç®ã® ForceMode2D ãçç¥ããå Žåããé垞㯠Force ãšããŠåãå ããããŸãã
ãã®ãããæåã«äœ¿ã£ãã
rb.AddForce(Vector2.right * power);ã Force ã䜿çšããŠãããšèããŠããã§ãããã
3-2ïŒImpulse â äžç¬ã ã匷ãåãå ãã
次ã¯ã
ForceMode2D.ImpulseImpulse ã¯ãåãäžç¬ã ãå ããããšãã«äœ¿ããŸãã
ã€ã¡ãŒãžãšããŠã¯ããã³ãïŒããšäžåºŠã ãåŒ·ãæŒããããªæãã§ãã
äŸãã°ã
ãžã£ã³ããã
ããŒã«ã蹎ã
ççºã§å¹ãé£ã°ã
æµããæ»æãåããŠããã¯ããã¯ãã
ãšãã£ãåãã«åããŠããŸãã

3-3ïŒAddForceã§ãžã£ã³ããããŠã¿ãã
Impulse ã®åããããã䜿çšäŸãããžã£ã³ãã§ãã
次ã®ã¹ã¯ãªãããäœæããŠã¿ãŸãããã
using UnityEngine;
public class Jump : MonoBehaviour
{
public Rigidbody2D rb;
public float jumpPower = 5f;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(
Vector2.up * jumpPower,
ForceMode2D.Impulse
);
}
}
}
ã¹ããŒã¹ããŒãæŒãããšãã«ã
rb.AddForce(
Vector2.up * jumpPower,
ForceMode2D.Impulse
);ãå®è¡ããŠããŸãããŸãã
Vector2.upã¯äžæ¹åã衚ããŸãã
ãã®ããã
Vector2.up * jumpPowerã§ãäžæ¹åãžå ããåã®å€§ãããäœã£ãŠããŸãã
ããã«ã2ã€ç®ã®åŒæ°ãšããŠã
ForceMode2D.ImpulseImpulse ã¯ãªããžã§ã¯ããžç¬éçãªè¡æãäžãããããªåã®å ãæ¹ã§ãã
ãžã£ã³ãã§ã¯ãäžæ¹åãžé·æéåãå ãç¶ãããšããããããããŒãæŒããç¬éã«ããã³ãããšäžæ¹åãžå¢ããäžããããšããåãã«ããããããImpulse ãåãããããäœ¿ãæ¹ã«ãªããŸãã
ããã§ããInput.GetKeyDown() ã¯ããŒãæŒããç¬éã«1åã ãå®è¡ãããã®ã ãããForce ã䜿ã£ãŠãåããªã®ã§ã¯ïŒããšæããããããŸããã
ãããã
äœåAddForceãåŒã³åºããïŒãšããã®1åã®åãã©ã®ããã«ç©çæŒç®ãžåæ ãããïŒã¯å¥ã®è©±ã§ãã
äŸãã°ã
rb.AddForce(
Vector2.up * jumpPower,
ForceMode2D.Force
);ãšããå ŽåããGetKeyDown() ã䜿ã£ãŠããã° AddForce èªäœã¯1åããå®è¡ãããŸããã
ãã ã Force ã¯ãç¶ç¶çã«åãå ããçšéã«åããã¢ãŒãã§ã1åã ãå®è¡ããå Žåã¯ãäžç¬ã ãå°ãæŒãããããªåã«ãªããŸãã
äžæ¹ã
rb.AddForce(
Vector2.up * jumpPower,
ForceMode2D.Impulse
);ã§ã¯ããã®1åã®åŒã³åºãã§ãäžç¬ã«ãŸãšãŸã£ãåãäžããããããªåãã«ãªããŸãã
ãžã£ã³ãã®ããã«ã
ããŒãæŒããç¬éã«
äžæ¹åãž
ã¯ã£ãããšããå¢ããäžããã
ãšããåŠçã§ã¯ãForceMode2D.Impulse ãæ±ããããã§ãããã
jumpPower ã®å€ãåãå ŽåãForce ãš Impulse ã§ã¯åãæ¹ãåãã«ã¯ãªããŸããã

4ïŒã©ã®ç§»åæ¹æ³ã䜿ãã°ããïŒ
ãããŸã§ã®ãUnity ãªããžã§ã¯ãã®ç§»åãã·ãªãŒãºã§ã¯ãããã€ãã®ç§»åæ¹æ³ã確èªããŠããŸããã
æåŸã«ãããããã®éããæŽçããŠã¿ãŸãããã
transform.position
transform.position += new Vector3(
speed * Time.deltaTime,
0,
0
);transform.position ã¯ããªããžã§ã¯ãã®åº§æšãã®ãã®ã倿Žããæ¹æ³ã§ããUnityã§ãªããžã§ã¯ããåãåºæ¬ã§ããããäœçœ®ãå€ãããšãªããžã§ã¯ããåãããšããèãæ¹ãçè§£ããã®ã«é©ããŠããŸãã
åçŽãªç§»åããæå®ããå Žæãžç§»åããããå Žåã«ã䜿ããããæ¹æ³ã§ãã
Transform.Translate
transform.Translate(
Vector3.right * speed * Time.deltaTime
);Translate ã¯ãçŸåšäœçœ®ããããã®æ¹åãžç§»åããããšããæžãæ¹ãããããæ¹æ³ã§ãã
å³ãžé²ããåãžé²ãããšãã£ãæ¹åãæèããç§»åãã·ã³ãã«ã«æžãããšãã§ããŸãã
linearVelocity
rb.linearVelocity = new Vector2(
speed,
rb.linearVelocity.y
);linearVelocity ã¯ãRigidbody2D ã®é床ãçŽæ¥å€æŽããŸãã
ãã®ããããã®é床ã§åããŠã»ããããšããå Žåã«äœ¿ããããæ¹æ³ã§ãã
äžå®é床ã§ç§»åãããã£ã©ã¯ã¿ãŒãªã©ã«ãåããŠããŸãã
AddForce
rb.AddForce(
Vector2.right * power
);AddForce ã¯ãRigidbody2Dãžåãå ããŸãã
é床ãçŽæ¥æ±ºããã®ã§ã¯ãªããåãå ããçµæãšããŠé床ãå€åããŸãã
ãã®ããã
å é
ãžã£ã³ã
ããã¯ããã¯
å¹ãé£ã°ã
ãªã©ãç©çæŒç®ã掻ãããåããäœããããæ¹æ³ã§ãã

ãããŸã§ããã€ãã®ç§»åæ¹æ³ãåŠç¿ããŠããŸããããã©ã®æ¹æ³ãäžçªåªããŠããããšããããã§ã¯ãããŸããã
äŸãã°ããã£ã©ã¯ã¿ãŒãäžå®é床ã§å·Šå³ãžåããããã®ã§ããã°ãlinearVelocity ãæ±ããããããšããããŸãã
ãžã£ã³ãããããã®ã§ããã°ã
AddForceãšã
ForceMode2D.Impulseã®çµã¿åããã䜿ããããã§ãããã
ãŸããç©çæŒç®ãå¿ èŠãªãåçŽãªãªããžã§ã¯ãç§»åãªãã
transform.positionãã
Transform.Translateã®ã»ããã·ã³ãã«ã«äœããå ŽåããããŸãã
倧åãªã®ã¯ãã©ããªåããäœãããã®ãããèããŠããã®ç®çã«åã£ãæ¹æ³ãéžã¶ããšã§ãã
Unityã§ã¯ãåãããã«èŠããåãã§ããå®è£ æ¹æ³ã¯ããã€ããããŸãã
ã²ãŒã ãäœããªãããä»åã¯ã©ã®æ¹æ³ã䜿ããããããªïŒããšèããããããã«ãªããšãããã°ã©ã ã®çµã¿ç«ãŠæ¹ãå°ããã€åãã£ãŠããŸãã
5ïŒä»åã®ãŸãšã
ä»åã¯ãRigidbody2Dã«åãå ããŠãªããžã§ã¯ããåãã AddForce ã«ã€ããŠç¢ºèªããŸããã

ãã¡ãã¯Unityåå¿è
åãã®èšäºãããŒãå¥ã«ãŸãšããŠããŸãã
⌠Unityåå¿è
åãèšäºãŸãšãã¯ãã¡ã
ãã¡ãã®ãã¬ãžã³ãããã²ãŒã äœæè¬åº§ãå š8åã»ãããã§ãã·ãŒã³ã®åãæ¿ããªã©ã掻çšããŠãåå¿è ã§ãç¥èãŒãããäœããããã²ãŒã äœæè¬åº§ã玹ä»ããŠããŸãã

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

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