Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡¥×¥ì¥¤¥ä¡¼¤¬Å¨¤«¤é¹¶·â¤ò¼õ¤±¤¿ºÝ¤Ë¡¢¥Î¥Ã¥¯¥Ð¥Ã¥¯(Ũ¤Î¹¶·â°ÌÃÖ¤ÈÈ¿ÂÐÊý¸þ¡¢¸åÊý¤Ø¿á¤­Èô¤Ð¤µ¤ì¤ë)½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤­¤Þ¤¹¡£


¥Î¥Ã¥¯¥Ð¥Ã¥¯¡¡Æ°²è
https://gyazo.com/729f0ee19bf3e781f4cf433dd1b107e8



¡¡¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍƤˤʤê¤Þ¤¹¡£

¡¦2ÅÀ´Ö¤Î°ÌÃÖ¾ðÊ󤫤éµ÷Î¥¤ÈÊý¸þ¤ò»»½Ð¤¹¤ë
¡¦Vector3.normalized¡ÊÀµµ¬²½½èÍý¡£Â®Å٥٥¯¥È¥ë¤ò»»½Ð¤¹¤ë¡Ë
¡¦Rigidbody.AddForce¥á¥½¥Ã¥É¤ÎForceMode



¡¡Àß·×ÊýË¡¤È¤·¤Þ¤·¤Æ¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤Î°ÌÃÖ¾ðÊó¤ò¡¢¸½ºß¤Î°ÌÃÖ¤«¤é¤ß¤Æ¡¢Å¨¤Î¹¶·â¤¬È¯À¸¤·¤¿°ÌÃÖ¤ÈÈ¿ÂФÎÊý¸þ¤Ø¤È°ÜÆ°¤µ¤»¤ë¤è¤¦¤Ë¤·¤Æ¡¢¥Î¥Ã¥¯¥Ð¥Ã¥¯¤ò±é½Ð¤·¤Þ¤¹¡£


¡ã2ÅÀ´Ö¤Î°ÌÃÖ¾ðÊ󤫤éµ÷Î¥¤ÈÊý¸þ¤ò»»½Ð¤¹¤ë¡ä


¡¡¤³¤Î¤È¤­É¬Íפˤʤë¾ðÊ󤬡¢¥×¥ì¥¤¥ä¡¼¤ÈŨ¤È¤Î¡ÖÊý¸þ¡×¤Ç¤¹¡£¥×¥ì¥¤¥ä¡¼¤ÈŨ¤È¤Ï¤¾¤ì¤¾¤ì°ÌÃÖ¾ðÊó¤òTransform.position¤È¤·¤ÆÊÝÍ­¤·¤Æ¤¤¤Þ¤¹¤¬
¤É¤Á¤é¤¬¤É¤ÎÊý¸þ¤ò¸þ¤¤¤Æ¤¤¤ë¡¢¤È¤¤¤¦¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¤Þ¤º¤Ï¡¢¤³¤Î¡ÖÊý¸þ¡×¤ò·×»»¤Ë¤è¤Ã¤Æ»»½Ð¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

Vector3 distination = ¥×¥ì¥¤¥ä¡¼¤Î°ÌÃÖ¾ðÊó - Ũ¤Î¹¶·â¤Î°ÌÃÖ¾ðÊó;

¡¡¤³¤Î·×»»¼°¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¥×¥ì¥¤¥ä¡¼¤ÈŨ¤È¤Î¡Öµ÷Î¥¡×¤¬º¹Ê¬¤È¤·¤Æ»»½Ð¤µ¤ì¤Þ¤¹¡£¤³¤Î¤È¤­°ì½ï¤Ë¡ÖÊý¸þ¡×¤Î¾ðÊó¤â¼èÆÀ¤Ç¤­¤Þ¤¹¡£



¡¡¥×¥ì¥¤¥ä¡¼¤ò¥Î¥Ã¥¯¥Ð¥Ã¥¯¤Ç°ÜÆ°¤µ¤»¤ëµ÷Î¥¤Ë¤Ä¤¤¤Æ¤Ï¡¢Å¨¤È¥×¥ì¥¤¥ä¡¼¤Î°ÌÃÖ´Ø·¸¤Ë´Ø·¸¤Ê¤¯°ìÄêÎ̤ˤ·¤¿¤¤¤Î¤Ç¡¢»»½Ð¤µ¤ì¤¿distinationÊÑ¿ô¤Ë¤ÏÀµµ¬²½½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£
¤½¤Î¾å¤Ç¡¢ÀßÄꤷ¤Æ¤¤¤ëKnockbackPowerÊÑ¿ô¡Ê¥Î¥Ã¥¯¥Ð¥Ã¥¯¤µ¤»¤ëÎϡˤò³Ý¤±¹ç¤ï¤»¤Æ¡¢¥Î¥Ã¥¯¥Ð¥Ã¥¯¤òȯÀ¸¤µ¤»¤Þ¤¹¡£



¡¡PlayerController¥¹¥¯¥ê¥×¥È¤ÎOnTriggerEnter¥á¥½¥Ã¥É¤ò½¤Àµ¤·¤Æ¤¤¤­¤Þ¤¹¡£¤Ê¤ªÄɲ乤ë½èÍý¤Î¤ß¤òµ­½Ò¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç
¤´¼«Ê¬¤Î¥á¥½¥Ã¥É¤ò»²¹Í¤Ë¡¢Å¬µ¹¤Ê°ÌÃ֤ˤ³¤Î½èÍý¤òÄɵ­¤·¤Æ¤¯¤À¤µ¤¤¡£


PlayerController.cs

Rigidboby rb;                  // Start¥á¥½¥Ã¥É¤Ê¤É¤ÇÊÑ¿ô¤Ë¤ÏÃͤòÂåÆþºÑ¤È¤¹¤ë

public float knockBackPower;   // ¥Î¥Ã¥¯¥Ð¥Ã¥¯¤µ¤»¤ëÎÏ

private void OnTriggerEnter(Collider other)
{
    rb.velocity = Vector3.zero;

    // ¼«Ê¬¤Î°ÌÃÖ¤ÈÀÜ¿¨¤·¤Æ¤­¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃ֤Ȥò·×»»¤·¤Æ¡¢µ÷Î¥¤ÈÊý¸þ¤ò½Ð¤·¤ÆÀµµ¬²½(®Å٥٥¯¥È¥ë¤ò»»½Ð)
    Vector3 distination = (transform.position - other.transform.position).normalized;
           
    rb.AddForce(distination * knockBackPower, ForceMode.VelocityChange);
    }
}


¡ãVector3.normalized¡ÊÀµµ¬²½½èÍý¡£Â®Å٥٥¯¥È¥ë¤ò»»½Ð¤¹¤ë¡Ë¡ä


¡¡Àµµ¬²½½èÍý¤Ç¤¹¡£Â®Å٥٥¯¥È¥ë¤ò»»½Ð¤·¤Þ¤¹¡£

¡¡¤³¤Î½èÍý¤ò¹Ô¤ï¤Ê¤¤¤È¡¢±óµ÷Î¥¤«¤é¤ÎŨ¤Î¹¶·â¤ò¼õ¤±¤¿¾ì¹ç¤Ë¡¢Î¥¤ì¤Æ¤¤¤ëµ÷Î¥¤¬±ó¤¤¤Û¤É¥Î¥Ã¥¯¥Ð¥Ã¥¯¤¹¤ëÎ̤¬Áý¤¨¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
Àµµ¬²½¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÃÍ¤Ï 0 ¡¢¤¢¤ë¤¤¤Ï 1 ¤È¤¤¤¦Â®Å٥٥¯¥È¥ë¤Ë¡¢µ÷Î¥¤ÈÊý¸þ¤Î¾ðÊó¤ÏÊݤ俤ޤޤÇÊÑ´¹¤µ¤ì¤Þ¤¹¡£

    // ¼«Ê¬¤Î°ÌÃÖ¤ÈÀÜ¿¨¤·¤Æ¤­¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃ֤Ȥò·×»»¤·¤Æ¡¢µ÷Î¥¤ÈÊý¸þ¤ò½Ð¤·¤ÆÀµµ¬²½(®Å٥٥¯¥È¥ë¤ò»»½Ð)
    Vector3 distination = (transform.position - other.transform.position).normalized;


¡¡Àµµ¬²½¤µ¤ì¤¿Ãͤò»ÈÍѤ·¤ÆAddForce¥á¥½¥Ã¥É¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢¾ï¤Ë°ìÄêÎ̤ΥΥ寥Х寤òȯÀ¸¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


¡ãRigidbody.AddForce¥á¥½¥Ã¥É¤ÎForceMode¡ä


¡¡AddForce¥á¥½¥Ã¥É¤ÎÂè2°ú¿ô¤Ë¤Ï¡¢ÎϤò¤É¤Î¤è¤¦¤Ë¤«¤±¤ë¤«ForceMode¤È¤·¤ÆÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÀßÄꤷ¤Ê¤¤¾ì¹ç¤Ë¤Ï ForceMode.Force ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£
º£²ó¤Ï ForceMode.VelocityChange ¤È¤¤¤¦ÀßÄê¤ò¹Ô¤¤¡¢¼ÁÎ̤˴ط¸¤Ê¤¯(̵»ë¤·¤Æ)¡¢½Ö´ÖŪ¤ÊÎϤò²Ã¤¨¤ë¤È¤¤¤¦¡¢ÊªÍý±é»»¤ò¹Ô¤¦½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£

    rb.AddForce(distination * knockBackPower, ForceMode.VelocityChange);


»²¹Íµ­»ö
Unity¸ø¼°¥¹¥¯¥ê¥×¥ÈAPI
ForceMode
https://docs.unity3d.com/ScriptReference/ForceMode...
Unity»È¤¤Êý¥¬¥¤¥ÉÍÍ
¥ê¥¸¥Ã¥É¥Ü¥Ç¥£¤ËÎϤò²Ã¤¨¤ëÊýË¡
https://unity-guide.moon-bear.com/rigidbody-addfor...

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹