I’m trying to use the OverlapCircle to check if the player is on the ground or not but I don’t know how to continue the script
using UnityEngine;
using System.Collections;
public class playercontroller : MonoBehaviour
{
[HideInInspector]
public bool facingRight = true;
[HideInInspector]
public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;
public LayerMask whatIsGround;
public bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;
// Use this for initialization
void Awake()
{
anim = GetComponent<Animator>();
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update() {
if (Input.GetKey(KeyCode.Space) && grounded == true) {
jump = true;
}
}
void FixedUpdate() {
float h = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(h));
if (h * rb2d.velocity.x < maxSpeed) //vai adicionar velociade ao jogador e manter no limite
rb2d.AddForce(Vector2.right * h * moveForce);
if (Mathf.Abs(rb2d.velocity.x) > maxSpeed) //se o jogador passar do limite de velocidade ira baixar até o limite
rb2d.velocity = new Vector2(Mathf.Sign(rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);
if (h > 0 && !facingRight) //ira fazer o flip no sprite junto com a animação
Flip();
else if (h < 0 && facingRight)
Flip();
if (jump) {
// anim.SetTrigger("Jump");
rb2d.AddForce(new Vector2(0f, jumpForce));
jump = false;
}
}
void Flip(){ //função de virar o script
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
void onGroundCollision(Collision coll) {
/if(Physics2D.OverlapCircle( , 5)){
grounded = true;
}
}
public bool grounded = false;
do you mean to keep checking constnatly or do you mean you dont know the rest of the script? if you want to continously check you need to place it in the fixed update loop by calling the function from inside it. a simple script is bool IsGrounded() { if(Physics2d.overlapcircle(,5)) return true; return false; } bool _IsGrounded; fixedupdate() { _IsGrounded = IsGrounded(); } now every fixed update frame the variable _IsGrounded will be updated to reflect if the player is grounded.
– sparkzbarcaThis method: void onGroundCollision(Collision coll), is yours or from unity?, if it is from unity, you need to check the syntax about it, at contrary, you need to check which contact point was detected, check the documentation about it, cheers.
– ArturoSR