Делаю 2д платформер, захотел двери. По идее должно работать так - есть дверь, и у нее есть linkeddoor
, при нажатии E пока в двери происходит телепортация на позицию linkeddoor
.
Вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class door : MonoBehaviour
{
Rigidbody2D rb;
public move character;
public Rigidbody2D plr;
public LayerMask doorlayer;
public Transform linkeddoor;
public GameObject doortip;
void Start()
{
doortip.gameObject.SetActive(false);
}
void Update()
{
Collider2D plrcollider = Physics2D.OverlapCircle(plr.position, 0.01f, doorlayer);
if (plrcollider != null)
{
character.canenter = true;
doortip.gameObject.SetActive(true);
}
else
{
character.canenter = false;
doortip.gameObject.SetActive(false);
}
if (character.entered)
{
plr.position = linkeddoor.position;
character.entered = false;
character.canenter = false;
}
}
}
Код с телепортацией при нажатии E(из скрипта персонажа):
if (canenter)
{
if (Input.GetKeyDown(KeyCode.E))
{
entered = true;
}
}
Проблема в том, что из-за public
в скрипте, все двери считают один linkeddoor
своим. Как можно заставить их смотреть только на свой linkeddoor
?
Коллайдер должен быть триггером.
[DisallowMultipleComponent]
[RequireComponent(typeof(Collider))]
public class Door : MonoBehaviour {
[SerializeField] private Door _linkDoor;
private Player _player;
private void Update () {
if (Input.GetKeyDown(KeyCode.E))
TransferPlayer();
}
private void OnTriggerEnter (Collider other) {
Player Player = GetComponent<Player>();
if (Player != null)
PlayerEnter(Player);
}
private void OnTriggerExit (Collider other) {
Player Player = GetComponent<Player>();
if (Player != null)
PlayerExit();
}
private void PlayerEnter (Player player) {
_player = player;
SetTipEnable(true);
}
private void PlayerExit () {
_player = null;
SetTipEnable(false);
}
private void TransferPlayer () {
if (_player != null && _linkDoor != null) {
//...
PlayerExit();
}
}
private void SetTipEnable (bool enable) {
//...
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
С помощью VK API методом videoget получил ссылку на видео: Ссылка на видео
Я хочу, чтобы данные в константе или объекте обновлялись, те
Скажите, пожалуйста, сделал landing page для бизнеса на Nuxt, теперь не знаю как это все положить на хостингМогу положить на Netlify, но мне нужно с красивым...