Пятница, 30 Сентября 2022, 18:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » ArtM@n [4]
Результаты поиска
ArtM@nДата: Воскресенье, 01 Сентября 2019, 17:39 | Сообщение # 1 | Тема: Камера
был не раз
Сейчас нет на сайте
Цитата seaman ()
Зависит от того как делаете рестарт. Но как минимум замените Awake на Start

public void ReloadedGame()
Вот:

Код
   
{
       
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    

    }
ArtM@nДата: Воскресенье, 01 Сентября 2019, 14:29 | Сообщение # 2 | Тема: Камера
был не раз
Сейчас нет на сайте
Добрый день!
При запуске уровня камера работает как надо двигается за персонажем но когда происходит рестарт камера перестает работать, как можно устранить эту проблему?
Код

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

[RequireComponent(typeof(Camera))]

public class CameraController : MonoBehaviour
{
    private enum Mode { Player, Cursor };

    [SerializeField] private Mode face; // вектор смещения, относительно "лица" персонажа или положения курсора
    [SerializeField] private float smooth = 2.5f; // сглаживание при следовании за персонажем
    [SerializeField] private float offset; // значение смещения (отключить = 0)
    [SerializeField] private SpriteRenderer boundsMap; // спрайт, в рамках которого будет перемещаться камера
    [SerializeField] private bool useBounds = true; // использовать или нет, границы для камеры

    private Transform player;
    private Vector3 min, max, direction;
   public static CameraController _use;
    public Camera cam;

    public static CameraController use
    {
        get { return _use; }
    }

    void Awake()
    {
        _use = this;
        cam = GetComponent<Camera>();
        cam.orthographic = true;
        FindPlayer();
        CalculateBounds();
    }

    // переключатель, для использования из другого класса
    public void UseCameraBounds(bool value)
    {
        useBounds = value;
    }

    // найти персонажа, если он был уничтожен, а потом возрожден
    // для вызова из другого класса, пишем: Camera2DFollowTDS.use.FindPlayer();
    public void FindPlayer()
    {
        player = GameObject.FindGameObjectWithTag("Player").transform;
        if (player) transform.position = new Vector3(player.position.x, player.position.y, transform.position.z);
    }

    // если в процессе игры, было изменено разрешение экрана
    // или параметр "Orthographic Size", то следует сделать вызов данной функции повторно
    public void CalculateBounds()
    {
        if (boundsMap == null) return;
        Bounds bounds = Camera2DBounds();
        min = bounds.max + boundsMap.bounds.min;
        max = bounds.min + boundsMap.bounds.max;
    }

    Bounds Camera2DBounds()
    {
        float height = cam.orthographicSize * 2;
        return new Bounds(Vector3.zero, new Vector3(height * cam.aspect, height, 0));
    }

    Vector3 MoveInside(Vector3 current, Vector3 pMin, Vector3 pMax)
    {
        if (!useBounds || boundsMap == null) return current;
        current = Vector3.Max(current, pMin);
        current = Vector3.Min(current, pMax);
        return current;
    }

    Vector3 Mouse()
    {
        Vector3 mouse = Input.mousePosition;
        mouse.z = -transform.position.z;
        return cam.ScreenToWorldPoint(mouse);
    }

    void Follow()
    {
        if (face == Mode.Player) direction = player.right; else direction = (Mouse() - player.position).normalized;
        Vector3 position = player.position + direction * offset;
        position.z = transform.position.z;
        position = MoveInside(position, new Vector3(min.x, min.y, position.z), new Vector3(max.x, max.y, position.z));
        transform.position = Vector3.Lerp(transform.position, position, smooth * Time.deltaTime);
    }

    void LateUpdate()
    {
        if (player)
        {
            Follow();
        }
    }
}
ArtM@nДата: Вторник, 27 Августа 2019, 13:01 | Сообщение # 3 | Тема: Отталкивание от стен
был не раз
Сейчас нет на сайте
Добрый день, как можно реализовать отталкивание от стен при прыжке персонажа вот код самого персонажа
Код

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

public class Slim : MonoBehaviour
{

    public float speed;
    public float jumpForce;
    private float moveInput;

    private Rigidbody2D rb;

    private bool facingRight = true;

    public bool isGrounded;
    public Transform groundCheck;
    public float checkRadius;
    public LayerMask whatIsGround;

    private int extraJumps;
    public int extraJumpsValue;

    private void Start()
    {
        extraJumps = extraJumpsValue;
        rb = GetComponent<Rigidbody2D>();
    }

    private void FixedUpdate()
    {
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);

        moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);

        if(facingRight == false && moveInput < 0)
        {
            Flip();
        }
        else if (facingRight == true && moveInput > 0)
        {
            Flip();
        }
    }

    void Flip()
    {
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler.x *= -1;
        transform.localScale = Scaler;
    }

    public void Update()
    {
        if (isGrounded == true)
        {
            extraJumps = extraJumpsValue;
        }

        if (Input.GetKeyDown(KeyCode.Space) && extraJumps > 0)
        {
            rb.velocity = Vector2.up * jumpForce;
            extraJumps--;
        }
        else if (Input.GetKeyDown (KeyCode.Space) && extraJumps == 0 && isGrounded == true)
        {
            rb.velocity = Vector2.up * jumpForce;
        }
    }
    void OnCollisionEnter2D(Collision2D co)
    {
        // Collided with a V?
        if (co.collider.name == "V")
        {
            // Reset Rotation, Gravity, Velocity and go to last Checkpoint
            transform.rotation = Quaternion.identity;
            rb.gravityScale = Mathf.Abs(rb.gravityScale);
            rb.velocity = Vector2.zero;
        }
    }

    

}

ArtM@nДата: Суббота, 20 Октября 2018, 00:01 | Сообщение # 4 | Тема: Apple Jam
был не раз
Сейчас нет на сайте
Название: Apple Jam
Жанр: Экшен, платформер
Игровой Движок: Unity
Пространство и вид: 2D с видом сбоку
Лицензия распространения: FREE
Управление: Клавиатура и мышь
Дата выхода: 2019-2020
Описание: Вы возьмете на себя роль яблока по имени "Jam" выращенное из ГМО. Jam страдает психическим расстройством, которое вызывает галлюцинации, вызывающие такие явления как ожившие снеговики, кухонные приборы, растения и существа не понятного происхождения, а также перемещение в разную реальность. Для начала необходимо сбежать с кухонной лаборатории, а затем раскрыть тайну своего происхождения. В игре планируется 12 уровней, 6 боссов, много черного юмора, сюжетные вставки в виде мини комикса и полное безумие.

Первые концепт-арты (графика будет дорабатываться):







Сообщение отредактировал ArtM@n - Суббота, 20 Октября 2018, 00:08
Форум игроделов » Записи участника » ArtM@n [4]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг