using UnityEngine;
public class TransparencyController : MonoBehaviour
{
public Transform playerTransform; // Ссылка на трансформ игрока
public Transform objectTransform; // Ссылка на трансформ объекта, прозрачность которого мы хотим контролировать
public float maxDistance = 10f; // Максимальное расстояние, при котором объект полностью прозрачен
public float minDistance = 2f; // Минимальное расстояние, при котором объект полностью непрозрачен
private SpriteRenderer objectRenderer; // Ссылка на компонент SpriteRenderer объекта
void Start()
{
// Получаем компонент SpriteRenderer объекта
objectRenderer = objectTransform.GetComponent<SpriteRenderer>();
}
void Update()
{
// Рассчитываем вектор от игрока к объекту и нормализуем его
Vector3 playerToObject = objectTransform.position - playerTransform.position;
float distance = playerToObject.magnitude;
float normalizedDistance = Mathf.Clamp01((distance - minDistance) / (maxDistance - minDistance));
// Изменяем прозрачность объекта в зависимости от нормализованного расстояния
Color objectColor = objectRenderer.color;
objectColor.a = 1f - normalizedDistance; // Инвертируем значение прозрачности
objectRenderer.color = objectColor;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 10f;
public CharacterController controller;
public Transform groundcheck;
public float gravity;
public LayerMask groundMask;
Vector3 velocity;
public bool isgrounded;
public float groundDistance = 0.4f;
public float jumpHeight = 3f;
void Update()
{
isgrounded = Physics.CheckSphere(groundcheck.position, groundDistance, groundMask);
if (isgrounded && velocity.y < 0)
{
velocity.y = -2f;
}
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
if (Input.GetButtonDown("Jump") && isgrounded)
{
velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
}
}
}
//ссылка на игровой обьект
public GameObject DigUiPanel;
**** остальной код***
//генерирую экземпляр
GameObject Layer = Instantiate(LayerPrefab, LayersStartPos.transform.position + layerCreatingDirection * i * offset, Quaternion.identity);
Layer.transform.rotation = Quaternion.Euler(0, 0, 45);
DigUI DigUIScript = Layer.GetComponentInChildren<DigUI>();
//задаю созданному экземпляру ссылку на реальный игровой объект
DigUIScript.DigUIPanel = DigUiPanel;
правильно ли я понимаю, что на этапе продакшена мы должны подключаться только к одному порту, на котором находится сервер, а он отправит html, css, js файлы при первом запросе на главную страницу а в дальнейшем будет отправлять JSON?В зависимости от настроек сервера и архитектуры твоего проекта. Экспресс может как отдавать хтмл/css,так и служить для обмена данными бека с фронтом(апи). Во втором случае за раздачу хтмл может отвечать какой-либо популярный веб-сервер, nginx/apache.
при использовании npm run build я получаю папку build, где много css и js файлов. Как эту папку надо связать с node.js
Допустим мы при первом запросе на сервер отправляем HTML файл. Но как клиент получит нужный ему css и js файл из кучи в папке build.все как в обычном html. Есть точка входа в виде хтмл-файла, к которой твой билдер уже привязал все стили/скрипты. Все это отдается клиенту.
import express from "express";
const app = express();
const ip = "localhost";
const port = 4000;
app.get("/", (req, res) => {
res.send("some response");
});
function startServer() {
app.listen(port, ip, () => {
console.log(`Сервер запущен на адресе ${ip} и порту ${port}`);
});
}
async function connectToDatabase() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve("ok"), 2000);
});
}
connectToDatabase()
.then(() => {
startServer();
console.log("Успешное подключение к базе данных.");
})
.catch((err) => {
console.error("Не удалось подключиться к базе данных:", err);
});
export function connectToDatabase() {
return new Promise((resolve, reject) => {
pool.connect((err, client, release) => {
if (err) {
console.error('Ошибка в запросе к БД (1)', err.stack);
release();
reject(err);
return;
}
client.query('SELECT NOW()', (err, result) => {
release();
if (err) {
console.error('Ошибка в запросе к БД (2)', err.stack);
reject(err);
return;
}
console.log('\x1b[34m%s\x1b[0m', `PostgreSQL is running (${result.rows[0].now})`);
resolve(pool);
});
});
});
}