Question by
jacobdykman · Apr 15, 2021 at 03:58 PM ·
c#2d-platformerprogramming
Having problems with Overlap Circle
So basically when this chest hits the ground layer(Terrain) I want it to just freeze in place but for some reason as soon as I hit play it thinks it's touching the ground layer but it's not. Is there something dumb that I'm doing wrong?
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
public class chestScript : MonoBehaviour
{
public SpriteRenderer spriteRenderer;
public Sprite openSprite;
public Sprite closeSprite;
[SerializeField] private LayerMask groundLayer;
public Transform groundCheck1;
public Transform groundCheck2;
public Rigidbody2D rigidbody2D;
public bool open;
public bool m_Grounded;
const float checkRadius = .1f;
private void Start()
{
m_Grounded = false;
Transform transform = gameObject.transform;
}
private void FixedUpdate()
{
if (open)
{
OpenChest();
}
else if (!open)
{
CloseChest();
}
m_Grounded = false;
// The player is grounded if a circlecast to the groundcheck position hits anything designated as ground
// This can be done using layers instead but Sample Assets will not overwrite your project settings.
Collider2D[] colliders1 = Physics2D.OverlapCircleAll(groundCheck1.position, checkRadius, groundLayer);
Collider2D[] colliders2 = Physics2D.OverlapCircleAll(groundCheck2.position, checkRadius, groundLayer);
foreach (Collider2D enemy in colliders1)
{
m_Grounded = true;
Landing();
Debug.Log(groundLayer);
}
}
public void OnDrawGizmosSelected()
{
Gizmos.DrawWireSphere(groundCheck1.position, checkRadius);
Gizmos.DrawWireSphere(groundCheck2.position, checkRadius);
}
void Landing()
{
Destroy(rigidbody2D);
}
void OpenChest()
{
spriteRenderer.sprite = openSprite;
}
void CloseChest()
{
spriteRenderer.sprite = closeSprite;
}
}
Comment