Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

После спавна префаба не работает его код

Kermit. Знаток (331), на голосовании 13 часов назад
Я делаю игру в юнити на подобии Tower Bloxx и у меня возникла проблема, после спавна префаба не работает его код.
Сначала объект ходит из стороны в сторону если нажать на него то он упадёт и если он соприкасается с колайдером(одним из этажей) то спавниться такой же объект и когда он спавниться он просто висит если нажать на него то он упадёт и всё ничего не появляется.
код AFall отвечает за то что объект ходит из строны в сторону и если мы на него нажмём то gravityScale будет равен 10 и активируется FreezePositionX и объект пойдёт вниз
Spawn отвечает за спавн объекта

Ещё бы я хотел добавить что бы после каждого нового поставленного этажа камера и спавн префаба поднимались вверх
 using UnityEngine; 
public class AFall : MonoBehaviour
{
private float dirX;
private float moveSpeed;
public static Rigidbody2D rb;
private bool facingRight = false;
private Vector3 localScale;
public Behaviour _entity;

private void Start()
{
localScale = transform.localScale;
rb = GetComponent<Rigidbody2D>();
dirX = -1f;
moveSpeed = 15f;
}

private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.GetComponent<Wall>())
{
dirX *= -1f;
}
}
private void FixedUpdate()
{
rb.velocity = new Vector2(dirX * moveSpeed, rb.velocity.y);
}

private void LateUpdate()
{
CheckWhereToFace();
}

void CheckWhereToFace()
{

if (dirX > 0)
facingRight = true;
else if (dirX < 0)
facingRight = false;

if (((facingRight) && (localScale.x < 0)) || ((!facingRight) && (localScale.x > 0)))
localScale.x *= -1;

transform.localScale = localScale;
}

private void OnMouseDown()
{
//_entity.enabled = false;
//a = false;
rb.gravityScale = 10f;
rb.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezePositionX;

}
}


 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class Spawn : MonoBehaviour
{
public GameObject GameObject;
public GameObject spawnPoint;
public void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "HouseStart")
{
AFall.rb.gravityScale = 0f;
Instantiate(GameObject, spawnPoint.transform.position, Quaternion.identity);
}
}
}
Голосование за лучший ответ
[ ] [ ] Мастер (1178) 1 месяц назад
Я подозреваю, что у объектов которые спаунятся нет тега HouseStart, вот и не появляется ничего
Kermit.Знаток (331) 1 месяц назад
тег и вправду не стоял но не помогло
[ ] [ ] Мастер (1178) Kermit., Поставь Debug.Log в функцию onColisionEnter в spawn. У тебя должно выводиться сообщение в консоль, если колизия произошла. Если её нет, значит у созданных объектов до сих пор нет этого тега
Kermit.Знаток (331) 1 месяц назад
ничего не происходит на все теги уже менял он просто висит
Похожие вопросы