Пятница, 19 Апреля 2024, 17:37

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » DekSter [9]
Результаты поиска
DekSterДата: Четверг, 11 Октября 2018, 18:35 | Сообщение # 1 | Тема: Персонаж проходит сквозь стены
был не раз
Сейчас нет на сайте
Персонаж проходит сквозь стены как можно исправить? (Вид игры сверху, персонаж двигается во все стороны)
Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class BOX : Unit

{

    [SerializeField]
    private int lives = 3;

    [SerializeField]
   public float speed = 3.0F;
   
    private bool isGrounded = false;

    private Vector2 direction;

    new private Rigidbody2D rigidbody;
    private SpriteRenderer sprite;

    private void Awake()
    {
        rigidbody = GetComponent<Rigidbody2D>();
        sprite = GetComponentInChildren<SpriteRenderer>();

    }

    private void Start()
    {
        direction = Vector2.up;
    }

    private void FixedUpdate()
    {
        CheckGround();
    }

    private void Update()
    {
        GetInput();
        Run();
    }

    

    private void Run()
    {
        transform.Translate(direction*speed*Time.deltaTime);

    }

    private void GetInput()
    {
        direction = Vector2.zero;

        if (Input.GetKey(KeyCode.W))
        {
            direction += Vector2.up;
        }
        if (Input.GetKey(KeyCode.A))
        {
            direction += Vector2.left;
        }
        if (Input.GetKey(KeyCode.S))
        {
            direction += Vector2.down;
        }
        if (Input.GetKey(KeyCode.D))
        {
            direction += Vector2.right;
        }

    }
   

   
    public override void ReceiveDamage()
    {
        lives--;
        rigidbody.velocity = Vector3.zero;
        rigidbody.AddForce(transform.up * 8.0F, ForceMode2D.Impulse);
        if (lives < 1) SceneManager.LoadScene("Death");
        Debug.Log(lives);
    }

    private void CheckGround()
    {

        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);
    }

    private void OnCollisionEnter2D(Collision2D collider)
    {
        if (collider.gameObject.name == "Portal")

            SceneManager.LoadScene("Ekran");
    }

    private void OnTriggerEnter2D(Collider2D collider)
    {
        
            Unit unit = collider.gameObject.GetComponent<Unit>();
        if (unit)
        {
            Debug.Log("OK");
            ReceiveDamage();
        }

    }
   

}
DekSterДата: Четверг, 11 Октября 2018, 16:36 | Сообщение # 2 | Тема: Передвижение персонажа по вертикали
был не раз
Сейчас нет на сайте
Как сделать движение персонажа во все стороны, если допустим у меня вид сверху?
DekSterДата: Среда, 10 Октября 2018, 19:11 | Сообщение # 3 | Тема: Передвижение персонажа по вертикали
был не раз
Сейчас нет на сайте
Добрый день, прошу помочь. Есть скрипт на персонажа который двигается горизонтально, как сделать чтобы персонаж двигался во все стороны влево, вправо, вверх и вниз, и при этом видел стены?
Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class Character : Unit

{

    [SerializeField]
    private int lives = 6;
    
    

    [SerializeField]
    private float speed = 3.0F;
    [SerializeField]
    private float jumpForce = 15.0F;

    private bool isGrounded = false;
    public float spawnX, spawnY;
    private Bullet bullet;

    private Charstate State
    {
        get
        {
            return (Charstate)animator.GetInteger("State");

        }
        set
        {
            animator.SetInteger("State", (int)value);
        }
    }
    

    new private Rigidbody2D rigidbody;
    private Animator animator;
    private SpriteRenderer sprite;

    private void Awake()
    {
        rigidbody = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        sprite = GetComponentInChildren<SpriteRenderer>();

        bullet = Resources.Load<Bullet>("Bullet");
    }

    private void FixedUpdate()
    {
        CheckGround();
    }

    private void Update()
    {
        if (isGrounded) State = Charstate.Idle;
        if (Input.GetButtonDown("Fire1")) Shoot();
        if (Input.GetButton("Horizontal")) Run();
        if (isGrounded && Input.GetButtonDown("Jump")) Jump();

    }

    private void Run()
    {

        Vector3 direction = transform.right * Input.GetAxis("Horizontal");
        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);

        sprite.flipX = direction.x < 0.0F;

        if (isGrounded) State = Charstate.Run;

    }

    private void Jump()
    {
        State = Charstate.Jump;

        rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
    }

    private void Shoot()
    {

        Vector3 position = transform.position; position.y += 0.7F;
        if (sprite.flipX)
            position.x -= 0.5F;
        else
            position.x += 0.5F;
        Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
        newBullet.Parent = gameObject;
        newBullet.Direction = newBullet.transform.right * (sprite.flipX ? -1.0F : 1.0F);

    }

    public override void ReceiveDamage()
    {
        lives--;
        rigidbody.velocity = Vector3.zero;
        rigidbody.AddForce(transform.up * 8.0F, ForceMode2D.Impulse);
        if(lives < 1) SceneManager.LoadScene("Death");
        Debug.Log(lives);
    }

    private void CheckGround()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);

        isGrounded = colliders.Length > 1;

        if (!isGrounded) State = Charstate.Jump;
    }

    private void OnCollisionEnter2D(Collision2D collider)
    {
        if (collider.gameObject.name == "Portal")

            SceneManager.LoadScene("Ekran");
    }

        private void OnTriggerEnter2D(Collider2D collider)
    {
        Unit unit = collider.gameObject.GetComponent<Unit>();
        if (unit)
        {
            Debug.Log("OK");
            ReceiveDamage();
        }

    }
    public enum Charstate
    {
        Idle,
        Run,
        Jump,
        Shoot

    }
}
DekSterДата: Среда, 03 Октября 2018, 21:03 | Сообщение # 4 | Тема: Стрельба только по игроку
был не раз
Сейчас нет на сайте
Здравствуйте, создал скрипт пули и для стреляющих врагов, но выстрел происходит как по игроку так и по своим. как можно реализовать чтобы враги не убивали своих?
Код на пули
Код

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

public class Bullet : MonoBehaviour
{
    private GameObject parent;
    public GameObject Parent { set { parent = value; } }

    private float speed = 30.0F;
    private Vector3 direction;
    public Vector3 Direction { set { direction = value; } }
    public float shootingRate = 0.25f;
    private float shootCooldown;
    

    private SpriteRenderer sprite;

    private void Awake()
    {
        sprite = GetComponentInChildren<SpriteRenderer>();
    }

    private void Start()
    {
        shootCooldown = 0f;
        {
            shootCooldown = 0f;
        }
        Destroy(gameObject, 0.5F);
    }
    private void OnTriggerEnter2D(Collider2D collider)
    {
        if (collider.tag == "Ground")
        {
            Destroy(gameObject);
        }
        {
            Unit unit = collider.GetComponent<Unit>();

            if (unit && unit.gameObject != parent)
            {
                unit.ReceiveDamage();
                Destroy(gameObject);
            }
        }
    }
    
    private void Update()
    {

        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
        if (shootCooldown > 0)
        {
            shootCooldown -= Time.deltaTime;
        }
    }

   
   
    }



Код на стреляющего врага
Код

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

public class ShootableMonster : Monster
{
    [SerializeField]
    private float rate = 2.0F;
    private Bullet bullet;

    protected override void Awake()
    {
        bullet = Resources.Load<Bullet>("Bullet");
    }

    protected override void Start()
    {
        InvokeRepeating("Shoot", rate, rate);
    }

    private void Shoot()
    {
      
    Vector3 position = transform.position;
        position.y += 0.4F;

        Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
        newBullet.Parent = gameObject;
        newBullet.Direction = -newBullet.transform.right;

        Collider2D collider = GetComponent<Collider2D>();

        if (collider.tag == "player")
        {
            ReceiveDamage();
        }
    }

    protected override void OnTriggerEnter2D(Collider2D collider)
   
    {
        Unit unit = collider.GetComponent<Unit>();

        if (unit && unit is Character)
        {
            if (Mathf.Abs(unit.transform.position.x - transform.position.x) < 0.3F) ReceiveDamage();
            else unit.ReceiveDamage();
        }
       
    }
}
DekSterДата: Суббота, 29 Сентября 2018, 17:29 | Сообщение # 5 | Тема: Персонаж не прыгает
был не раз
Сейчас нет на сайте
Написал код для того чтобы персонаж прыгал после одного нажатия вот часть фрагмента из за которого персонаж больше не пргыает (if (isGrounded && Input.GetButtonDown ("Jump")) Jump()), как можно исправить проблему?
Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Character : MonoBehaviour {

    [SerializeField]
    private int lives = 3;
    [SerializeField]
    private float speed = 3.0F;
    [SerializeField]
    private float jumpForce = 15.0F;

    private bool isGrounded = false;

   
    new private Rigidbody2D rigidbody;
    private Animator animator;
    private SpriteRenderer sprite;

    private void Awake()
    {
    rigidbody = GetComponent<Rigidbody2D>();
    animator = GetComponent<Animator>();
    sprite = GetComponentInChildren<SpriteRenderer>();
    }

    private void FixedUpdate()
    {
        CheckGround();
    }

    private void Update()
    {
  if (Input.GetButton ("Horizontal")) Run();
        if (isGrounded && Input.GetButtonDown ("Jump")) Jump();
    }

    private void Run()
    {
    
  Vector3 direction = transform.right * Input.GetAxis ("Horizontal");    
  transform.position = Vector3.MoveTowards (transform.position, transform.position + direction, speed * Time.deltaTime);

        sprite.flipX = direction.x < 0.0F;

    }

    private void Jump()
    {

  rigidbody.AddForce (transform.up * jumpForce, ForceMode2D.Impulse);
    }

    private void CheckGround()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);

        isGrounded = colliders.Length > 1;
        
    }

    
}
DekSterДата: Четверг, 27 Сентября 2018, 09:32 | Сообщение # 6 | Тема: Ограничение камеры
был не раз
Сейчас нет на сайте
У меня камера двигается за персонажем, но при этом охватывает часть фона, мне нужно чтобы камера охватывала только объекты уровня не выходя за их пределы
DekSterДата: Среда, 26 Сентября 2018, 21:26 | Сообщение # 7 | Тема: Ограничение камеры
был не раз
Сейчас нет на сайте
Здравствуйте, у меня возникла проблема. Написал скрипт для камеры он работает но камера выходит за пределы сцены, то есть показывает часть фона, как выставить границы камеры не выходящие за пределы уровня?
Код

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

public class CameraController : MonoBehaviour
{
    public float damping = 1.5f;
    public Vector2 offset = new Vector2(2f, 1f);
    public bool faceLeft;
    private Transform player;
    private int lastX;

    void Start()
    {
        offset = new Vector2(Mathf.Abs(offset.x), offset.y);
        FindPlayer(faceLeft);
    }

    public void FindPlayer(bool playerFaceLeft)
    {
        player = GameObject.FindGameObjectWithTag("Player").transform;
        lastX = Mathf.RoundToInt(player.position.x);
        if (playerFaceLeft)
        {
            transform.position = new Vector3(player.position.x - offset.x, player.position.y + offset.y, transform.position.z);
        }
        else
        {
            transform.position = new Vector3(player.position.x + offset.x, player.position.y + offset.y, transform.position.z);
        }
    }

    void Update()
    {
        if (player)
        {
            int currentX = Mathf.RoundToInt(player.position.x);
            if (currentX > lastX) faceLeft = false; else if (currentX < lastX) faceLeft = true;
            lastX = Mathf.RoundToInt(player.position.x);

            Vector3 target;
            if (faceLeft)
            {
                target = new Vector3(player.position.x - offset.x, player.position.y + offset.y, transform.position.z);
            }
            else
            {
                target = new Vector3(player.position.x + offset.x, player.position.y + offset.y, transform.position.z);
            }
            Vector3 currentPosition = Vector3.Lerp(transform.position, target, damping * Time.deltaTime);
            transform.position = currentPosition;
        }
    }
}
DekSterДата: Среда, 20 Сентября 2017, 22:58 | Сообщение # 8 | Тема: HADSON [Интерактивная литература]
был не раз
Сейчас нет на сайте
Цитата catindanger ()
То есть вот просто тупых фильмов и комиксов про мстителей уже не хватает?


Здесь не конкретно про мстителей, хоть действия происходят в их вселенной но здесь они служат объектом для развития истории


Сообщение отредактировал DekSter - Среда, 20 Сентября 2017, 22:59
DekSterДата: Среда, 20 Сентября 2017, 14:22 | Сообщение # 9 | Тема: HADSON [Интерактивная литература]
был не раз
Сейчас нет на сайте

Движок: AXMA Story
Пространство:2D
Платформа: PC
Срок разработки: с сентября 2017
Дата выхода: Ноябрь 2017
Дата выхода демо: Октябрь 2017

Описание:

Представляю вашему вниманию свой проект в жанре "Интерактивной литературы". Вам предстоит расследовать загадочные убийства супер героев в роли детектива Джека Хадсона, обладающим паранормальными способностями. Все действие происходит во вселенной MARVEL.

Сюжет:

Много времени прошло с момента последней угрозы и новых не наблюдалось, а раз так, то команда "Мстителей" была временно расформирована. Но спустя несколько дней у себя дома был обнаружен мертвым Доктор Брюс Баннер (Халк) убитый во сне. Для расследования этого убийства агенты "Щит" вызвали детектива Джека Хадсона, который способен погружаться в сознание людей, видеть их прошлое и разговаривать с душами умерших. С этого и начинается повествование.

Особенности:

- 2D стиль
- Не линейный сюжет
- Несколько концовок
- Расследование с помощью паранормальных способностей
- Все ваши действия будут влиять на историю и концовки, любой неправильный выбор может привести к скорому завершению истории...

Добавлено (20 сентября 2017, 14:22)
---------------------------------------------
Скриншоты: (Обновлено)









Сообщение отредактировал DekSter - Среда, 20 Сентября 2017, 14:27
Форум игроделов » Записи участника » DekSter [9]
  • Страница 1 из 1
  • 1
Поиск:

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