Ich möchte, dass er nur springen kann wenn er die Plattform von oben berührt, sodass er nicht mehr springen kann wenn er die Plattform von der linken oder rechten Seite berührt. Hier ist der Movement Skript:
[SerializeField] private LayerMask layermask;
public float speed;
public float jumpForce;
private bool IsRunningLeft = false;
private bool IsRunningRight = false;
//private Animator anim;
private BoxCollider2D bc2D;
bool isJumping;
Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
//anim = GetComponent<Animator>();
bc2D = GetComponent<BoxCollider2D>();
}
public void FixedUpdate()
{
if (IsRunningLeft)
{
//anim.Play("RunAnimOfPlayer");
transform.rotation = Quaternion.Euler(0, 180, 0);
transform.position += Vector3.left * speed * Time.deltaTime;
}
else
{
//anim.SetBool("IsNotRun", true);
}
if (IsRunningRight)
{
//anim.Play("RunAnimOfPlayer");
transform.rotation = Quaternion.Euler(0, 0, 0);
transform.position += Vector3.right * speed * Time.deltaTime;
}
else
{
//anim.SetBool("IsNotRun", true);
}
if (IsGrounded() && Input.touchCount > 0)
{
for(int i = 0; i < Input.touchCount; i++)
{
var touch = Input.touches[i];
if (touch.position.x > Screen.width / 2)
{
rb.velocity = Vector2.up * jumpForce;
}
}
}
}
public void SetIsRunningLeftToTrue()
{
IsRunningLeft = true;
}
public void SetIsRunningLeftToFlase()
{
IsRunningLeft = false;
}
public void SetIsRunningRightToTrue()
{
IsRunningRight = true;
}
public void SetIsRunningRightToFlase()
{
IsRunningRight = false;
}
private bool IsGrounded()
{
RaycastHit2D raycasthit = Physics2D.BoxCast(bc2D.bounds.center, bc2D.bounds.size, 0f, Vector2.down, .01f, layermask);
return raycasthit.collider != null;
}
hat jemand eine Idee wie das funktionieren könnte?