Четверг, 21 Ноября 2024, 23:08

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
ZigMoonTДата: Среда, 12 Августа 2020, 00:10 | Сообщение # 1 | Тема: Враг трясется, как бешеный [Решение найдено!]
был не раз
Сейчас нет на сайте
Всем привет! Суть алгоритма заключается в том, чтобы враг подходил к игроку, чтобы враг убегал от игрока и чтобы враг стал на фиксированном расстоянии. На гифке ниже можно наблюдать тряску врага crazy .


Вставил ту часть кода в которой подразумеваю ошибки. Очень прошу вас помочь.
Код
private void FixedUpdate()
    {
        if (Vector2.Distance(transform.position, player.position) > maxDistance)
        {
            rb.constraints = RigidbodyConstraints2D.None;
            rb.isKinematic = false;
            moveCharacter(movement, moveSpeed);
        }

        else if (Vector2.Distance(transform.position, player.position) < maxDistance)
        {
            rb.constraints = RigidbodyConstraints2D.None;
            moveCharacter(movement, -moveSpeed);
        }

        else if (Vector2.Distance(transform.position, player.position) == maxDistance)
        {
            rb.constraints = RigidbodyConstraints2D.FreezeAll;
            rb.isKinematic = false;
        }
    }

    void moveCharacter(Vector2 direction, float speed)
    {
        rb.MovePosition((Vector2)transform.position + (direction * speed * Time.deltaTime));
    }


Добавлено (12 Августа 2020, 00:57)
---------------------------------------------
Решение нашлось методом тыка. Для того, чтобы врага не штырило, необходимо увеличить значение линейного сопротивления и углового. На английском Linear drag and Angular drag.

Всем кто столкнулся с подобной проблемой желаю удачи!

Добавлено (12 Августа 2020, 12:11)
---------------------------------------------
Так же таким способом можно убирать дрожь игрока, если тот трясется при столкновении с коллайдерами.

Сообщение отредактировал ZigMoonT - Среда, 12 Августа 2020, 00:58
ZigMoonTДата: Понедельник, 11 Мая 2020, 16:34 | Сообщение # 2 | Тема: Анимация игрока в падении [Решено!]
был не раз
Сейчас нет на сайте
freeprogrammer, большое спасибо!
ZigMoonTДата: Понедельник, 11 Мая 2020, 03:00 | Сообщение # 3 | Тема: Анимация игрока в падении [Решено!]
был не раз
Сейчас нет на сайте
Здравствуйте. У персонажа в игре при падении с платформы продолжается анимация бега или ходьбы, на видео можно увидеть. Вот видео. В видео я не продолжал нажимать клавиши движения, персонаж просто падал. Не вините меня за спрайт перса, я только разбираюсь в основах создания 2D игр. Если нужно объяснение моего невнятного кода, то обязательно все распишу.

Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{

    Rigidbody2D rb;
    Animator animator;
    SpriteRenderer sprite;

    [SerializeField]
    int speed;
    [SerializeField]
    int jumpForce;
    [SerializeField]
    Transform CheckGround;
    [SerializeField]
    int run;

    private int speed1;
    private bool speedBool = false;
    private bool idle = true;

    bool isGrounded;
    private float time = 3f;
    public float timeOut = 3f;

    private void Start()
    {
        speed1 = speed;
        rb = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        sprite = GetComponent<SpriteRenderer>();
    }

    void Update()
    {
        time += Time.deltaTime;
    }

    private void FixedUpdate()
    {

        if(Physics2D.Linecast(transform.position, CheckGround.position, 1 << LayerMask.NameToLayer("Ground")))
        {
            isGrounded = true;
        }
        else
        {
            isGrounded = false;
        }

        if (Input.GetKey(KeyCode.D))
        {
            rb.velocity = new Vector2(speed, rb.velocity.y);
            
            if (isGrounded && speedBool == false)
                animator.Play("Player_Run");

            sprite.flipX = false;
            idle = false;
        }
        else if (Input.GetKey(KeyCode.A))
        {
            rb.velocity = new Vector2(-speed, rb.velocity.y);

            if (isGrounded && speedBool == false)
                animator.Play("Player_Run");

            idle = false;
            sprite.flipX = true;
        }
        else if(isGrounded)
        {
            rb.velocity = new Vector2(0, rb.velocity.y);

            if (isGrounded)
                animator.Play("Player_Idle");
            idle = true;
        }

        if (Input.GetKey(KeyCode.LeftShift) && idle == false)
        {
            speed = run;
            speedBool = true;

            if (isGrounded)
                animator.Play("Player_Runing");
        }
        else
        {
            speed = speed1;
            speedBool = false;
        }

        if (Input.GetKey(KeyCode.W) && isGrounded == true && time > timeOut)
        {
            time = 0f;
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
            animator.Play("Player_Jump");
        }
    }
}


Сообщение отредактировал ZigMoonT - Понедельник, 11 Мая 2020, 16:34
ZigMoonTДата: Четверг, 09 Января 2020, 01:27 | Сообщение # 4 | Тема: Не работает триггер
был не раз
Сейчас нет на сайте
drcrack, все понял, спасибо!)
ZigMoonTДата: Среда, 08 Января 2020, 10:50 | Сообщение # 5 | Тема: Не работает триггер
был не раз
Сейчас нет на сайте
drcrack, я тогда ставил, static тоже пробовал, все равно не работает.

Добавлено (08 Января 2020, 10:57)
---------------------------------------------
drcrack, странности происходят, короче скрипт из-за чего-то тригерится только на Layer Ground


Сообщение отредактировал ZigMoonT - Среда, 08 Января 2020, 10:57
ZigMoonTДата: Среда, 08 Января 2020, 10:37 | Сообщение # 6 | Тема: Не работает триггер
был не раз
Сейчас нет на сайте
drcrack, в общем, поставил rb2d объект упал на платформу, после чего уровень перезагрузился
ZigMoonTДата: Среда, 08 Января 2020, 10:09 | Сообщение # 7 | Тема: Не работает триггер
был не раз
Сейчас нет на сайте
Доброе утро, буду очень благодарен за помощь в данном вопросе. В общем, написал скрипт для перезагрузки уровня:
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class RestartZone : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D col)
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}



Кинул скрипт на объект для теста, а толку ноль. Последние 30 минут сижу ломаю голову, в других проектах было все нормально с триггерами.


Сообщение отредактировал ZigMoonT - Четверг, 09 Января 2020, 01:28
ZigMoonTДата: Понедельник, 28 Октября 2019, 18:17 | Сообщение # 8 | Тема: Экспорт анимации из Photoshop в Unity
был не раз
Сейчас нет на сайте
Dymkens, спасибо, вчера по этому тутору разобрался))
ZigMoonTДата: Понедельник, 28 Октября 2019, 00:52 | Сообщение # 9 | Тема: Экспорт анимации из Photoshop в Unity
был не раз
Сейчас нет на сайте
Всем привет, в фотошопе нарисовал пиксельную анимацию бега, но к сожалению возникли проблемы с экспортом в Unity. Буду очень признателен за помощь.
ZigMoonTДата: Пятница, 11 Октября 2019, 00:12 | Сообщение # 10 | Тема: Проверка платформы под ногами при прыжке
был не раз
Сейчас нет на сайте
InsaneSystems, перекопал кучи инфы в инете и все таки написал данный скрипт. Это для тех кто ищет решение данной проблемы (не забудьте RigidBody2D и BoxCollider).
Код
public class ControllerCharacter : MonoBehaviour
{
    public float speed;
    public float jumpForce;
    private float moveInput;

    private Rigidbody2D rb;

    private bool facingRight = true;

    private bool isGrounded;
    public Transform groundedCheck;
    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(groundedCheck.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();
        }
    }

    private 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 Flip()
    {
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler.x *= -1;
        transform.localScale = Scaler;
    }
}


Сообщение отредактировал ZigMoonT - Пятница, 11 Октября 2019, 00:20
ZigMoonTДата: Четверг, 10 Октября 2019, 21:42 | Сообщение # 11 | Тема: Проверка платформы под ногами при прыжке
был не раз
Сейчас нет на сайте
Добрый день, подскажите как проверить, что персонаж находится на платформе, когда он прыгает(без этой проверки персонаж отталкивается от воздуха).
Код
using UnityEngine;

public class RigidBodyHero : MonoBehaviour
{

    Rigidbody2D rb;

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

    
    void Update()
    {
        if (Input.GetKeyDown (KeyCode.Space))
        {
            Jump();
        }
    }

    void FixedUpdate()
    {
        rb.velocity = new Vector2 (Input.GetAxis("Horizontal") * 12f, rb.velocity.y);
    }

    void Jump()
    {
        rb.AddForce(transform.up * 7f, ForceMode2D.Impulse);
    }
}
ZigMoonTДата: Пятница, 04 Октября 2019, 21:26 | Сообщение # 12 | Тема: Очень черные тени у объекта
был не раз
Сейчас нет на сайте
drcrack, спасибо, дружище!
ZigMoonTДата: Пятница, 04 Октября 2019, 20:43 | Сообщение # 13 | Тема: Очень черные тени у объекта
был не раз
Сейчас нет на сайте
Привет! В Unity я создал новую сцену где поставил обычный Directional Light, как бы я не крутил свет, тень все равно очень черная, на Sample Scene все нормально, а на новой все печально.



Сообщение отредактировал ZigMoonT - Пятница, 04 Октября 2019, 21:26
ZigMoonTДата: Четверг, 03 Октября 2019, 19:58 | Сообщение # 14 | Тема: Шейдеры и другие настройки палитры объекта нельзя изменить
был не раз
Сейчас нет на сайте
drcrack, огромное спасибо, дружище! Всего тебе самого-самого!

Сообщение отредактировал ZigMoonT - Четверг, 03 Октября 2019, 19:59
ZigMoonTДата: Четверг, 03 Октября 2019, 19:12 | Сообщение # 15 | Тема: Шейдеры и другие настройки палитры объекта нельзя изменить
был не раз
Сейчас нет на сайте
Здравствуйте, 4 день подряд сталкиваюсь с этой проблемой, честно говоря уже выбешивает, все объекты после экспорта в Unity становятся очень бледными (и в редакторе моделей приходится делать совсем яркими и цветастыми, чтобы Unity отображал именно тот цвет, который нужно). Как я думаю - это можно исправить только с помощью шейдеров. Программа в которой создаю объекты MagicaVoxel.


Сообщение отредактировал ZigMoonT - Четверг, 03 Октября 2019, 19:59
ZigMoonTДата: Четверг, 03 Октября 2019, 00:34 | Сообщение # 16 | Тема: Стрелки передвижения находятся далеко от объекта
был не раз
Сейчас нет на сайте
DivES, видимо там он не стоял, завтра на "трезвую" голову буду решать с MagicaVoxel. Ну а тебе, спасибо, что пытался помочь - это заслуживает почета и уважения.

Сообщение отредактировал ZigMoonT - Четверг, 03 Октября 2019, 00:44
ZigMoonTДата: Четверг, 03 Октября 2019, 00:28 | Сообщение # 17 | Тема: Стрелки передвижения находятся далеко от объекта
был не раз
Сейчас нет на сайте
DivES, ой сорри :D . Я на скорую руку сделал скрин и случайно поменял не те значения, но тоже не работает, он смещает Box Collider на место центра(картинка 1). Но решение есть, нашел все таки. Нужно создать пустой объект и поместить как дочернюю модель(2 картинка) и тогда будет так, как должно быть. Еще одним из решений является изменение Pivot в редакторе (в котором делаешь 3D модель), тогда не придется создавать кучу материнских объектов.
1.
2.


Сообщение отредактировал ZigMoonT - Четверг, 03 Октября 2019, 00:28
ZigMoonTДата: Четверг, 03 Октября 2019, 00:06 | Сообщение # 18 | Тема: Стрелки передвижения находятся далеко от объекта
был не раз
Сейчас нет на сайте
Спасибо за навигацию на сайте, теперь буду знать как нормально прикрепить фото. Выставил к сожалению, нет. Box Collider становится на место того самозванного центра. Сейчас попробую поковыряться в MagicaVoxel, вероятно там какие-то проблемы.
ZigMoonTДата: Среда, 02 Октября 2019, 23:23 | Сообщение # 19 | Тема: Стрелки передвижения находятся далеко от объекта
был не раз
Сейчас нет на сайте
DivES, действительно центр смещен , но не из-за моего сдвига (картинка 1 (к сожалению)). Выгружая объект у него сразу есть такой центр (картинка 2), хотя в MagicaVoxel модель имеет четкую грань прямо в притык(картинка 3).
1. http://s1.uploadpics.ru/images/WJjYssvrMB.png
2. http://s1.uploadpics.ru/images/Wy7Dj2wSMr.png
3. http://s1.uploadpics.ru/images/Wk4t4TDHfH.png
ZigMoonTДата: Среда, 02 Октября 2019, 22:32 | Сообщение # 20 | Тема: Стрелки передвижения находятся далеко от объекта
был не раз
Сейчас нет на сайте
Добрый вечер, я начинающий разработчик и на ранних этапах возникают трудности. С одной из таких я столкнулся прямо сейчас, буду благодарен за любую помощь, ну давайте ближе к делу. На фото видно, что положение стрелок управления ниже чем сам объект, при этом все объекты которые я делал вручную имеют такую проблему. Вместе с этим источник звука располагается вместе со стрелками.
Фото с проблемой: http://s1.uploadpics.ru/images/ZkwUkrvrGB.png
http://s1.uploadpics.ru/images/WkApGSDrMr.png


Сообщение отредактировал ZigMoonT - Четверг, 03 Октября 2019, 00:56
  • Страница 1 из 1
  • 1
Поиск:

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