Что делать при предупреждении - The local function 'CheckGround' is declared but never used?
Решил изучить юнити по уроку, а точнее по курсу "Юнити - 2D платформер с нуля".
Написал такой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public Transform groundChek;
Rigidbody2D rb;
public float Speed;
public float jumpHeight;
bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
Flip();
CheckGround();
}
void FixedUpdate()
{
rb.velocity = new Vector2(Input.GetAxis("Horizontal") * Speed, rb.velocity.y);
if(Input.GetKeyDown(KeyCode.Space) && isGrounded) {
rb.AddForce(transform.up * jumpHeight, ForceMode2D.Impulse);
}
}
void Flip () {
if(Input.GetAxis("Horizontal") > 0) {
transform.localRotation = Quaternion.Euler(0, 0, 0);
if(Input.GetAxis("Horizontal") < 0) {
transform.localRotation = Quaternion.Euler(0, 180, 0);
}
}
void CheckGround () {
Collider2D[] colliders = Physics2D.OverlapCircleAll(groundCheck.posithion, 0.2f);
isGrounded = colliders.Length > 1;
}
}
}
Ответы (2 шт):
Автор решения: Gilly
→ Ссылка
Вы сделали локальный метод Check Ground, но нигде в коде или вне кода(хотя локальные переменные из вне кода вы не сможете использывать) его не используете
Автор решения: BattleCrow
→ Ссылка
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField] private Transform _groundCheckTransform;
[SerializeField] private float _speed;
[SerializeField] private float _jumpHeight;
private Rigidbody2D _rb;
private bool _isGrounded;
private void Start()
{
_rb = gameObject.GetComponent<Rigidbody2D>();
}
private void Update()
{
Flip();
CheckGround();
}
private void FixedUpdate()
{
_rb.velocity = new Vector2(Input.GetAxis("Horizontal") * _speed, _rb.velocity.y);
if(Input.GetKeyDown(KeyCode.Space) && _isGrounded)
{
_rb.AddForce(transform.up * _jumpHeight, ForceMode2D.Impulse);
}
}
private void Flip ()
{
if(Input.GetAxis("Horizontal") > 0)
{
transform.localRotation = Quaternion.Euler(0, 0, 0);
if(Input.GetAxis("Horizontal") < 0)
{
transform.localRotation = Quaternion.Euler(0, 180, 0);
}
}
}
private void CheckGround()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(_groundCheckTransform.position, 0.2f);
_isGrounded = colliders.Length > 1;
}
}
Проблема была в одной неправильно поставленной точке с запятой и фигурной скобке. Но в тоже время прощу обратить внимание на то, как я переписал ваш код. У вашего кода были явные проблемы с внешним видом :)
И лично от себя добавлю: я конечно не посягаюсь на курс Unity3DSchool, но в плане качества кода (да и в целом) он не очень хорош ;)