Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2019, 14:49   #1
Nasekomus
Новичок
Джуниор
 
Регистрация: 26.12.2019
Сообщений: 1
По умолчанию Не работает код (Unity, 2D игра, индикатор удара)

По задумке, когда мой игрок бьется об шипы, то он должен временно краснеть и возвращаться обратно в стандартные цвета. Также, при смерти он должен проваливаться, то бишь капсул-коллайдер должен попросту выключаться. Ни того, ни другого не происходит, то есть все, что у меня в войде RecountHp не работает. Также креплю несколько скриншотов настроек - игрока и врага. Помогите, пожалуйста

Код скрипта, который я креплю к плееру:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Plsyer : MonoBehaviour
{
Rigidbody2D rb;
public float speed;
public float jumpHeight;
public Transform groundCheck;
bool isGrounded;
Animator anim;
int curHp;
int maxHp = 3;
bool isHit = false;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
curHp = maxHp;
}
// Update is called once per frame
void Update()
{

CheckGround();
if (Input.GetAxis("Horizontal") == 0 && (isGrounded))
{
anim.SetInteger("State", 1);
}
else
{
Flip();
if (isGrounded)
anim.SetInteger("State", 2);
}
}
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(groundCh eck.position, 0.2f);
isGrounded = colliders.Length > 1;
if (!isGrounded)
anim.SetInteger("State", 3);
}
public void RecountHp(int deltaHp)
{
curHp = curHp + deltaHp;
if (deltaHp < 0)
{
StopCoroutine(OnHit());
isHit = true;
StartCoroutine(OnHit());
}
print(curHp);
if (curHp <= 0)
{
GetComponent<CapsuleCollider2D>().e nabled = false;
}
}
IEnumerator OnHit()
{
if (isHit)
GetComponent<SpriteRenderer>().colo r = new Color(1f, GetComponent<SpriteRenderer>().colo r.g - 0.04f, GetComponent<SpriteRenderer>().colo r.b - 0.04f);
else
GetComponent<SpriteRenderer>().colo r = new Color(1f, GetComponent<SpriteRenderer>().colo r.g + 0.04f, GetComponent<SpriteRenderer>().colo r.b - 0.04f);
if (GetComponent<SpriteRenderer>().col or.g <= 1)
StopCoroutine(OnHit());
if (GetComponent<SpriteRenderer>().col or.g <= 0)
isHit = false;
yield return new WaitForSeconds(0.02f);
StartCoroutine(OnHit());
}
}

Код, который я креплю к энэми:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Player")
{
collision.gameObject.GetComponent<P layer>().RecountHP(-1);
collision.gameObject.GetComponent<R igidbody2D>().AddForce(transform.up * 9f, ForceMode2D.Impulse);
}
}
}
Изображения
Тип файла: png ss (2019-12-24 at 07.52.21).png (75.7 Кб, 1 просмотров)
Тип файла: png ss (2019-12-24 at 07.52.35).png (55.1 Кб, 10 просмотров)
Nasekomus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы думаете, сколько людей поведутся на приложение, "измеряющую силу удара"? Вадим Мошев Свободное общение 19 24.10.2018 16:34
Игра Command & Conquer Generals не работает Мирсаидов Некбахт Windows 1 23.03.2018 17:27
Игра на Unity Nik_022 Фриланс 0 24.09.2017 14:11
Математическое моделирование (скорость падения парашютиста в момент удара о землю) lexayn Помощь студентам 1 26.03.2011 00:22
Не работает игра на канве New man Общие вопросы Delphi 7 17.02.2011 22:09