ºÇ½ª¹¹¿·¡§ orika_ex_miyako 2020ǯ10·î15Æü(ÌÚ) 12:40:07ÍúÎò
¼ê½ç£´¡¡¡Ý¼êµå¤ÎµóÆ°À©¸æ¤ò¼ÂÁõ¡Ý
¡¡£·¡¥PhysicsMaterial2D¤òºîÀ®¤·¤Æ¡¢¼êµå¤ÈÊɤËȿȯÀßÄê¤ò¤¹¤ë ¡¡£¸¡¥¼êµåÍÑ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë¡ÊȿȯÀßÄê¤ò¤·¡¢¼êµå¤¬ÊɤËÀÜ¿¨¤·¤ÆÄ·¤ÍÊÖ¤ë¡Ë
¡¡¿·¤·¤¤³Ø½¬ÆâÍƤϡ¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¦PhysicsMaterial2D¤ÎºîÀ®ÊýË¡¤ÈÍøÍÑÊýË¡ ¡¦Vector2.Reflect¥á¥½¥Ã¥É
¡¡Unity¤ÎʪÍý±é»»¤Îµ¡Ç½¤Î£±¤Ä¤Ë Physics Material 2D ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤Îµ¡Ç½¤òÍøÍѤ¹¤ë¤³¤È¤Ç¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈƱ»Î¤Î¾×ÆÍ»þ¤ÎË໤¤äÃÆÀ¤òÄ´À°¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
PhysicsMaterial2D
Unity¸ø¼°¥Þ¥Ë¥å¥¢¥ë
Physics Material 2D
https://docs.unity3d.com/ja/2019.4/Manual/class-Ph...
¡¡Bound¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¾ðÊó¤¬É½¼¨¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢²¼µ¤Î²èÁü¤Î¤è¤¦¤ËÀßÄê¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£
Bound(PhysicsMaterial2D)¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü
¡¡Friction¤Ï¡¢¥³¥é¥¤¥À¡¼¤ÎË໤·¸¿ô¤Ç¤¹¡£Ãͤ¬ 0 ¤Î¤È¤¤ÏË໤¤¬¤Þ¤Ã¤¿¤¯È¯À¸¤»¤º¡¢Â礤¤¤Û¤ÉË໤¤¬¤«¤«¤ê¡¢¥¨¥Í¥ë¥®¡¼¤¬¼º¤ï¤ì¤ÆÄä»ß¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡Bounciness¤Ï¡¢¾×ÆÍ»þ¤ÎɽÌ̤«¤éÃƤà¤È¤¤Î¶¯¤µ¤Ç¤¹¡£Ãͤ¬ 0 ¤Î¾ì¹ç¤Ï¤Þ¤Ã¤¿¤¯ÃƤޤº¡¢Ãͤ¬ 1 ¤Î¾ì¹ç¤Ï¥¨¥Í¥ë¥®¡¼Â»¼º¤Ê¤¯ÃƤߤޤ¹¡£
¡¡¤³¤ì¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£Â³¤¤¤Æ¤³¤Î Bound ¤ò¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËÀßÄꤷ¤Þ¤¹¡£
¡¡
PhysicsMaterial2D¤ÎÀßÄê¾ì½ê¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë Collider ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¡£
¡¡¤Þ¤º¤Ï CharaBall ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
CapsuleCollider2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î Material Íó¤Ë¡¢Bound ¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
¤³¤ì¤ÇÀßÄꤵ¤ì¤Þ¤·¤¿¡£
CharaBall¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü
¡¡Â³¤¤¤Æ¡¢£´¤Ä¤ÎÊÉ(Wall ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È)¤Ë¤âƱ¤¸¤è¤¦¤Ë Bound ¤òÀßÄꤷ¤Þ¤¹¡£³ÆÊÉ¤Ë¤Ï BoxCollier2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç
¤³¤Á¤é¤Î Material Íó¤Ë Bound ¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
¡¡Æ±¤¸¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¥Ò¥¨¥é¥ë¥¡¼¾å¤ÇÊ£¿ôÁªÂò¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢°ì³ç¤Ç¤Î¥¢¥µ¥¤¥ó¤¬²Äǽ¤Ç¤¹¡£
Æ°²è¡¡Ê£¿ô¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËƱ¤¸¥¢¥µ¥¤¥ó¾ðÊó¤ÎÀßÄê¤ò¹Ô¤¦¾ì¹ç
https://gyazo.com/61a99edfe8ac398e3aaa86e0204b3780
³Æ Wall ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü
Wall_Left¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È
Wall_Right¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È
Wall_Top¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È
Wall_Bottom¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È
¡¡
¡¡¤³¤ì¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¡¡¡Ú£·¡Û¤Î¼ê½ç¤Ç¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈƱ»Î¤ÎȿȯÀßÄ꤬´°Î»¤·¤Þ¤·¤¿¤Î¤Ç¡¢¼¡¤Ï¡¢¼êµå¤Î¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Þ¤¹¡£
ȿȯÀßÄê¤ò¤·¤Æ¤¢¤ë¤«¤é¤È¤¤¤Ã¤Æ¼«Æ°Åª¤ËÄ·¤ÍÊÖ¤ë¤è¤¦¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
¡¡¸½ºß¤Î¼êµå¤Î®ÅÙ¤òÊÝ»ý¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤ò£±¤ÄÄɲä·¤Þ¤¹¡£¤³¤Î¾ðÊó¤ò»È¤Ã¤Æ¡¢ÊɤËÀÜ¿¨¤·¤¿ºÝ¤Î³ÑÅ٤η׻»¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¤Þ¤¿OnCollisionEnter2D¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÊɤÈÀÜ¿¨¤·¤¿¾ì¹ç¤Ë¡¢Êɤȼêµå¤Î®ÅÙ¡¦³ÑÅ٤˱þ¤¸¤ÆÄ·¤ÍÊÖ¤ë·×»»½èÍý½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
CharaBall.cs
¡¡Ë¡Àþ¤ò´ð½à¤Ë¤·¤¿È¿¼Í¥Ù¥¯¥È¥ë¤ò¼èÆÀ¤Ç¤¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
¡¡Vector2 Reflect (Vector2 inDirection, Vector2 inNormal)
¡¡Âè1°ú¿ô¤Î inDirection ¤Ï¸½ºß¤Î¿Ê¹Ô¥Ù¥¯¥È¥ë¤Ç¤¹¡£¼êµå¤ÎÊý¸þ¤È®Å٤Ǥ¹¡£
¡¡Âè2°ú¿ô¤Î inNormal ¤ÏË¡Àþ¥Ù¥¯¥È¥ë¡ÊÌÌ(¤³¤³¤Ç¤ÏÊÉ)¤ËÂФ·¤Æ¿âľÊý¸þ¤Î¥Ù¥¯¥È¥ë¡Ë¤Ç¤¹¡£
¡¡¤³¤Î£²¤Ä¤ÎÃͤòÅϤ·¤¿·ë²Ì¤¬È¿¼Í¥Ù¥¯¥È¥ë¡ÊÄ·¤ÍÊÖ¤êÍѤΥ٥¯¥È¥ë¡Ë¤È¤Ê¤Ã¤Æ Vector2 ·¿¤ÎÃͤȤ·¤ÆÌᤵ¤ì¤Þ¤¹¡£
¼Ð¤áÊý¸þ¤«¤é¼êµå¤¬ÊɤËÀÜ¿¨¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¤½¤ÎÈ¿¼ÍÊý¸þ¤ò·×»»¤·¤Æ¡¢Ä·¤ÍÊ֤餻¤Æ¤¯¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤Þ¤¿¤³¤Î·×»»¤ò¹Ô¤¦¤¿¤á¤Ë¡¢¿·¤·¤¤ procVelocity ÊÑ¿ô¤ÎÀë¸À¤ò¤·¤Æ¤¤¤Þ¤¹¡£
private Vector2 procVelocity = Vector2.zero;¡¡¡¡¡¡// Velocity·×»»ÊÝ»ýÍÑ ¡¡// Ä·¤ÍÊÖ¤êÍѤΥ٥¯¥È¥ë(È¿¼Í³ÑÅÙ)¤òReflect¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ·×»»(Âè1°ú¿ô¤Ç¥Ü¡¼¥ë¤ÎÊý¸þ¤È®ÅÙ¡¢Âè2°ú¿ô¤ÏÊɤ˿⾤Êñ°Ì¥Ù¥¯¥È¥ë) ¡¡Vector2 reflectVector = Vector2.Reflect(procVelocity, normalVector); ¡¡// ¼¡¤Î®Å٤η׻»ÍѤËVelocity¤ÎÃͤòÊÝ»ý¤·¤Æ¤ª¤¯ procVelocity = rb.velocity;
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Vector2 Reflect
https://docs.unity3d.com/ja/current/ScriptReferenc...
¿Þ²ò¤¬¤¢¤ê¡¢¤ï¤«¤ê¤ä¤¹¤¤ÀâÌÀ¤¬ºÜ¤Ã¤Æ¤¤¤Þ¤¹
stackoverrun
Unity - Vector2.Reflect¡Ê¡Ë¤Î»È¤¤Êý
https://stackoverrun.com/ja/q/11321749
¡¡¼êµåÍѤÎCharaBall¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤·¤Þ¤¹¡£
¡¡¥²¡¼¥à¼Â¹Ô¤ÈƱ»þ¤ËÆ°¤½Ð¤·¤¿¼êµå¤¬ÊɤËÀÜ¿¨¤¹¤ë¤È¡¢È¿È¯ÀßÄê¤ÈÄ·¤ÍÊÖ¤ê¤Î½èÍý¤Ë¤è¤Ã¤Æ¼«Á³¤ÊÊý¸þ¤ËÄ·¤ÍÊÖ¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¸¡¾ÚÆ°²è¡¡¼êµå¤¬ÊɤËÀÜ¿¨¤·¤¿ºÝ¤ËÄ·¤ÍÊÖ¤ë
https://gyazo.com/094cdc9e58a52b528bd3ade5b115040c
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯