using System.Collections ;
using System.Collections .Generic ;
using UnityEngine;
public class JumpTest : MonoBehaviour
{
private const int maxJumpCount = 3 ;
private Counter counter = new Counter( maxJumpCount) ;
[ SerializeField]
private Rigidbody2D rigid;
[ SerializeField]
private ContactFilter2D contactFilter2D;
// IsNormalAngleをtrue,角度を70~110に設定,レイヤーも設定
[ SerializeField]
private float jumpPower;
// Update is called once per frame
void Update( )
{
if ( Input.GetKeyDown ( "a" ) )
{
if ( counter.IsConsumable ( 1 ) )
{
counter.Consume ( 1 ) ;
Jump( ) ;
}
}
}
private void Jump( )
{
rigid.velocity = new Vector2( rigid.velocity .x , 0 ) ;
rigid.AddForce ( new Vector2( 0 , jumpPower) , ForceMode2D.Impulse ) ;
}
private void OnCollisionEnter2D( Collision2D collision)
{
if ( rigid.IsTouching ( contactFilter2D) )
counter.SetValue ( maxJumpCount) ;
}
}
public class Counter
{
private int _value;
public bool IsConsumable( int value)
{
return _value - value >= 0 ;
}
public void Consume( int value)
{
_value = _value - value;
}
public int GetValue( )
{
return _value;
}
public void SetValue( int value)
{
_value = value;
}
public Counter( int value)
{
_value = value;
}
}
dXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgVW5pdHlFbmdpbmU7CgpwdWJsaWMgY2xhc3MgSnVtcFRlc3QgOiBNb25vQmVoYXZpb3VyCnsKICAgIHByaXZhdGUgY29uc3QgaW50IG1heEp1bXBDb3VudCA9IDM7CgogICAgcHJpdmF0ZSBDb3VudGVyIGNvdW50ZXIgPSBuZXcgQ291bnRlcihtYXhKdW1wQ291bnQpOwoKICAgIFtTZXJpYWxpemVGaWVsZF0KICAgIHByaXZhdGUgUmlnaWRib2R5MkQgcmlnaWQ7CiAgICBbU2VyaWFsaXplRmllbGRdCiAgICBwcml2YXRlIENvbnRhY3RGaWx0ZXIyRCBjb250YWN0RmlsdGVyMkQ7CiAgICAvLyBJc05vcm1hbEFuZ2xl44KSdHJ1ZSzop5LluqbjgpI3MO+9njExMOOBq+ioreWumizjg6zjgqTjg6Tjg7zjgoLoqK3lrpoKCgogICAgW1NlcmlhbGl6ZUZpZWxkXQogICAgcHJpdmF0ZSBmbG9hdCBqdW1wUG93ZXI7CgogICAgLy8gVXBkYXRlIGlzIGNhbGxlZCBvbmNlIHBlciBmcmFtZQogICAgdm9pZCBVcGRhdGUoKQogICAgewogICAgICAgIGlmIChJbnB1dC5HZXRLZXlEb3duKCJhIikpIAogICAgICAgIHsKICAgICAgICAgICAgaWYgKGNvdW50ZXIuSXNDb25zdW1hYmxlKDEpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3VudGVyLkNvbnN1bWUoMSk7CiAgICAgICAgICAgICAgICBKdW1wKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIEp1bXAoKSAKICAgIHsKICAgICAgICByaWdpZC52ZWxvY2l0eSA9IG5ldyBWZWN0b3IyKHJpZ2lkLnZlbG9jaXR5LngsIDApOwogICAgICAgIHJpZ2lkLkFkZEZvcmNlKG5ldyBWZWN0b3IyKDAsanVtcFBvd2VyKSxGb3JjZU1vZGUyRC5JbXB1bHNlKTsKICAgIH0KCgogICAgcHJpdmF0ZSB2b2lkIE9uQ29sbGlzaW9uRW50ZXIyRChDb2xsaXNpb24yRCBjb2xsaXNpb24pCiAgICB7CiAgICAgICAgaWYgKHJpZ2lkLklzVG91Y2hpbmcoY29udGFjdEZpbHRlcjJEKSkKICAgICAgICAgICAgY291bnRlci5TZXRWYWx1ZShtYXhKdW1wQ291bnQpOwogICAgfQp9CgoKCnB1YmxpYyBjbGFzcyBDb3VudGVyIAp7CiAgICBwcml2YXRlIGludCBfdmFsdWU7CgogICAgcHVibGljIGJvb2wgSXNDb25zdW1hYmxlKGludCB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gX3ZhbHVlIC0gdmFsdWUgPj0gMDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBDb25zdW1lKGludCB2YWx1ZSkgCiAgICB7CiAgICAgICAgX3ZhbHVlID0gX3ZhbHVlIC0gdmFsdWU7CiAgICB9CgogICAgcHVibGljIGludCBHZXRWYWx1ZSgpIAogICAgewogICAgICAgIHJldHVybiBfdmFsdWU7CiAgICB9CiAgICBwdWJsaWMgdm9pZCBTZXRWYWx1ZShpbnQgdmFsdWUpIAogICAgewogICAgICAgIF92YWx1ZSA9IHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBDb3VudGVyKGludCB2YWx1ZSkgCiAgICB7CiAgICAgICAgX3ZhbHVlID0gdmFsdWU7CiAgICB9Cn0=
compilation info
prog.cs(3,7): error CS0246: The type or namespace name `UnityEngine' could not be found. Are you missing an assembly reference?
prog.cs(5,25): error CS0246: The type or namespace name `MonoBehaviour' could not be found. Are you missing an assembly reference?
prog.cs(12,13): error CS0246: The type or namespace name `Rigidbody2D' could not be found. Are you missing an assembly reference?
prog.cs(14,13): error CS0246: The type or namespace name `ContactFilter2D' could not be found. Are you missing an assembly reference?
prog.cs(42,37): error CS0246: The type or namespace name `Collision2D' could not be found. Are you missing an assembly reference?
Compilation failed: 5 error(s), 0 warnings
stdout