Jump to content
gu2ma

"unity" - Robimy platformówkę

Recommended Posts

@jmk mam dzisiaj trochę wolnego czasu, mogę Ci spróbować pomóc. Tylko musielibyśmy porozmawiać na skype. Jeżeli Ty znajdziesz czas, odpisz mi w wiadomości prywatnej z swoim nickiem skype. Pozdrawiam. 

Share this post


Link to post
Share on other sites

Witam.

Mam poważny problem z 4 częścią poradnika. Mój wróg z nieznanego mi powodu buguje się przy waypoincie (tzn. trzęsie się i nie idzie dalej). Wszystkie skrypty przekopiowałem ze strony i wykonałem wszystkie kroki poradnika. Proszę o pomoc.

gra.bug.jpg

Share this post


Link to post
Share on other sites
Dnia 2.05.2016 o 17:40, gu2ma napisał:

@jmk mam dzisiaj trochę wolnego czasu, mogę Ci spróbować pomóc. Tylko musielibyśmy porozmawiać na skype. Jeżeli Ty znajdziesz czas, odpisz mi w wiadomości prywatnej z swoim nickiem skype. Pozdrawiam. 

 

Dzięki, wolałbym jednak w formie pisanej. Pracuję bardzo nieregularnie i sporo, ciężko mi umówić się na konkretne godziny.

  • Upvote 1

Share this post


Link to post
Share on other sites

@MgQg

Miałem ten sam problem spróbuj tego rozwiązania.

Dnia 23.04.2016 o 19:55, gu2ma napisał:

@Kubowski ja czekam na odpowiedź w tej sprawie od twórcy. Jeżeli coś się dowiem dam Ci pierwszemu znać. Trzymaj się. 

 

Rozwiązanie!!!  >>>klik<<<

  • Upvote 1

Share this post


Link to post
Share on other sites

@jmk Muszę poprosić Cię o cały projekt. "Przed wysłaniem pracy zmień jedną rzecz w nim. Wejdź do menu Edit -> Project Settings -> Editor i w oknie Inspectora Version Control Mode z Hidden Meta Files na Visible Meta fFles.

Projekt polecam wrzucić na www.dropbox.com."

 

PS Jeżeli z tym też masz problem. Poproszę Cię o zrzut tego drugiego błędu, bo miałeś chyba 2?  

Share this post


Link to post
Share on other sites

Hmm, dzisiaj włączyłem, bo chciałem się jeszcze trochę z tym pomęczyć i... błędy zniknęły, gra działa hm...

  • Upvote 1

Share this post


Link to post
Share on other sites

Kolejny materiał wideo z kursu już niebawem. 13-14-15 maja to dni w których zabiorę się za wykonanie kolejnych kroków podanych w czasopiśmie. 

 

Obecna <<playlista<<

 

edit: Wynikły pewne nieoczekiwane problemy. Musze skontaktować się z  twórcą poradnika. Mam nadzieję, że pozwoli mi to ukończyć swoją pracę. 

Edited by gu2ma

Share this post


Link to post
Share on other sites

To Ja mam pytanie dotyczące pierwszej części kursu. Zrobiłem platformę, bohatera, dałem im kolizje itp., jednak problem pojawił się przy podłączaniu postaci do kamery - Wszystko kompletnie znika, pozostawiając jedynie domyślne tło (którego nie zmieniałem). Wiem jednak, że sterowanie działa, co można poznać po zmieniających się współrzędnych kamery. Sprawdziłem, czy dobrze zakodowałem postać, kamerę, ale żadnego błędu nie wykryłem. Ktoś ma pomysł, co robię źle?

Share this post


Link to post
Share on other sites

Dzień dobry, właśnie skończyłem projekt, który przedstawiam jutro w szkole. Dziękuje za wszystkie porady oraz pomoc (oraz CD - Action za kurs). Niestety nie wyślę wam gry, ponieważ jest za duża. Jeszcze raz dzięki i do następnego sezonu!

  • Upvote 1

Share this post


Link to post
Share on other sites

@CaptainPorpoise to ja Ci dziękuję za Twoje zaangażowanie. Powodzenia w szkole! 

PS Jeżeli chcesz komuś wysłać projekt zapisz go w innym miejscu. Dlaczego? Po stworzeniu programu (gry - plik .exe) zawartość folderu zwiększa się diametralnie. Później zostaje jeszcze "spakowanie" przy pomocy programu WinRAR i otrzymamy plik miły dla oka. Polecam serwis Dropbox (w celu zamieszczenia swojej pracy). 

Gorąco pozdrawiam, Sebastian. 

  • Upvote 1

Share this post


Link to post
Share on other sites
16 godzin temu, gu2ma napisał:

Wszystko znika po uruchomieniu programu?  

Tak. Kiedy uruchamiam grę przez przycisk "Play" u góry ekranu, to zarówno postać jak i platforma na której powinna ona lądować, znika.

Share this post


Link to post
Share on other sites

Witam (tak znów ja) mam problem co do fragmentu skryptu Enemy z 5 części poradnika. Visal Studio podkreśla mi dużo fragmentów kodu jako błąd. Wszystko jest na screen'ach, które przesyłam:

błędy skryptu enemy.png

błędy skryptu enemy lista error.png

Proszę o pomoc nie długo też chcę zaprezentować to w szkole. 

Share this post


Link to post
Share on other sites

@pejter powiedz mi, a dodałeś do każdej rzeczy typu: postać, tło, platforma - osobną warstwę? (Sorting Layer)

@Kubowski  zauważylem, że masz pewne braki, jeżeli do tej pory robiłeś wszystko zgodnie z instrukcjami podanymi w czasopiśmie mój kod powinien Ci pomóc - oczywiście najpierw skopiuj i zapisz swoją treść! 

 

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

public class Enemy : MonoBehaviour
{
    public int m_Health = 3;
    public float m_JumpForce = 350;
    public List<WayPoint> m_WayPoints;
    public float m_Speed = 5;
    public float m_SnapDistance = 0.4f;
    public GameObject m_Target;
    public float m_TargetDistance = 3;
    public JumpPoint m_JumpPoint;

    private Animator m_Animator;
    private bool m_InAir;
    private float m_WayPointTime = 0;
    private float m_CurrentWayPointTime = 0;
    private int m_CurrentWayPointIndex = 0;
    private bool m_DestinationReached = false;
    private Rigidbody2D m_Rigidbody;

    void Start()
    {
        m_Rigidbody = GetComponent<Rigidbody2D>() as Rigidbody2D;
        m_Animator = GetComponent<Animator>()as Animator;
    }

    void Update()
    {

        if (m_Rigidbody != null)
        {
            if (m_Rigidbody.velocity.y != 0)
            {
                m_InAir = true;
            }
            else
            {
                m_InAir = false;
            }

            if (m_Animator != null)
            
                if (m_Rigidbody.velocity.y != 0)
                {
                    m_Animator.Play("Jump");
                }
                else {
                    if (m_Rigidbody.velocity.x != 0)
                    {
                        m_Animator.Play("Walk");
                    }
                    else if (m_Rigidbody.velocity.x == 0)
                    {
                        m_Animator.Play("Idle");

                    }
            }
        }

if (m_Target == null)
        {
            if (!m_DestinationReached)
            {
                if (Vector3.Distance(transform.position, m_WayPoints[m_CurrentWayPointIndex].transform.position) > m_SnapDistance)
                {
                    Follow(m_WayPoints[m_CurrentWayPointIndex].gameObject);
                
                }
                else {
                    m_Rigidbody.position = m_WayPoints[m_CurrentWayPointIndex].transform.position;
                    m_WayPointTime = m_WayPoints[m_CurrentWayPointIndex].m_WaitTime;
                    m_DestinationReached = true;
                    m_CurrentWayPointIndex = (++m_CurrentWayPointIndex) % m_WayPoints.Count;
                    m_Rigidbody.velocity = Vector3.zero;
                }
            }
            else {
                m_CurrentWayPointTime += Time.deltaTime;

                if (m_CurrentWayPointTime >= m_WayPointTime)
                {
                    m_CurrentWayPointTime = 0;
                    m_DestinationReached = false;
                }
            }
        }
        else {
            if (Vector3.Distance(transform.position, m_Target.transform.position) > m_TargetDistance)
            {
              Follow(m_Target);
            }
            
            }
        }
   

    void Follow(GameObject target)
    {
        Vector2 direction = target.transform.position - transform.position;
        direction.Normalize();

        float targetY = target.transform.position.y;

        if (target.GetComponent<BoxCollider2D>() != null)
        {
            targetY = target.GetComponent<BoxCollider2D>().bounds.min.y;

        }

        float enemyY = gameObject.GetComponent<BoxCollider2D>().bounds.min.y;
        float diff = Mathf.Abs(targetY - enemyY);

        if (!m_InAir)
        {
            if (m_JumpPoint != null && diff > 0.1f)
            {
                Vector3 velocity = Vector3.zero;

                if (m_JumpPoint.m_Up != null && direction.y > 0)
                {
                    velocity = m_JumpPoint.m_Up.transform.position - transform.position;
                    velocity = new Vector3(velocity.x, velocity.y * m_JumpForce * 2, velocity.z);

                }
                else if (m_JumpPoint.m_Down != null && direction.y < 0)
                {
                    velocity = m_JumpPoint.m_Down.transform.position - transform.position;
                    velocity = new Vector3(velocity.x * m_JumpForce, -velocity.y * m_JumpForce, velocity.z);
                }

                m_Rigidbody.velocity = velocity;
            }
            else
            {
                m_Rigidbody.velocity = new Vector2(direction.x * m_Speed, m_Rigidbody.velocity.y);
            }
        }
    }

    void OnCollisionEnter2D(Collision2D coll)
    {
        Bullet bullet = coll.collider.GetComponent<Bullet>() as Bullet;

        if (bullet != null)
        {
            m_Health--;

            if (m_Health <= 0)
            {
                Destroy(gameObject);
            }
        }
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        PlayerMovement player = other.GetComponent<PlayerMovement>();

        if (player != null)
        {
            m_Target = player.gameObject;
        }
    }

    void OnTriggerExit2D(Collider2D other)
    {
        PlayerMovement player = other.GetComponent<PlayerMovement>();

        if (player != null)
        {
            m_Target = null;
        }
    }
}

  • Upvote 1

Share this post


Link to post
Share on other sites

Póki co działa. Dzięki po raz kolejny dokończę 5 część i w razie czego to napisze gdybym miał kolejny problem.

 

P.S. Z collider'ów da się zrobić trampolinę (nawet z tych które mają zaznaczone "Is Trigger") wystarczy na granicy collider'a wcisnąć klawisz od skoku może to spowodować wyrzucenie za mapę dlatego zrobiłem "niewidzialny dach" na górze poziomu. :) 

  • Upvote 1

Share this post


Link to post
Share on other sites

Mam problem. Jestem właśnie na części 3, tworzeniu broni. Po tym jak utworzyłem skrypt Weapon i Bullet i wpisałem w nich wszystkie skrypty powstaje błąd. Otóż moja postać sama z siebie strzela bez wciśnięcia przycisku i w dodatku strzela cały czas. Załączam screeny skryptu Weapon i ustawień klawiszowych dla Fire1.

error.png

error 2.png

Share this post


Link to post
Share on other sites
Cytat

pejter powiedz mi, a dodałeś do każdej rzeczy typu: postać, tło, platforma - osobną warstwę? (Sorting Layer)

@gu2ma Tła nie ruszałem w ogóle. Na początku wszystko miało domyślną warstwę. Po twoim poście poeksperymentowałem z tymi warstwami i ich kolejnością. Niestety bez rezultatów. Jedyne co udało mi się odkryć, to że po spauzowaniu gry widać, że bohater wylądował na platformie, a kamera "leży na nim".

Share this post


Link to post
Share on other sites

@pejter w pliku: Main Camera masz dodany skrypt: CameraFollow, a w polu target: Player

@BigRedChick  masz błąd w skrypcie. Po: " m_CurrentMagazineAmount--; " - końcówka skryptu 

USUŃ WSZYSTKO! i wklej to:

 

}

    } 
    public void AddBulets(int amount)
    {
        m_CurrentAmmoAmount =
            Mathf.Clamp(m_CurrentAmmoAmount + amount, 0,
            m_MaxAmmo);
    }
        
}

 

Powinno pomóc. Pozdrawiam, Sebastian

Jakbyś miał problemy @BigRedChick oto cały poprawnie napisany skrypt WEAPON:

 

using UnityEngine;
using System.Collections;

public class Weapon:MonoBehaviour {
    public GameObject m_Bullet;
    public Transform m_BulletSpawnPoint;
    public int m_MagazineCapacity = 10;
    public int m_MaxAmmo = 30;

    private int m_CurrentAmmoAmount;
    private int m_CurrentMagazineAmount;

    // Use this for initialization
    void Start() {
        m_CurrentMagazineAmount = m_MagazineCapacity;
        m_CurrentAmmoAmount = m_MaxAmmo;

    }

    // Update is called once per frame
    void Update() {
        if (Input.GetButtonDown("Reload"))
        {
            int bulletsToAdd =
                m_MagazineCapacity - m_CurrentMagazineAmount;

            if (m_CurrentAmmoAmount < bulletsToAdd)
            {
                bulletsToAdd = m_CurrentAmmoAmount;
            }
            m_CurrentAmmoAmount-= bulletsToAdd;
            m_CurrentMagazineAmount += bulletsToAdd;
        }
        if (Input.GetButtonDown("Fire1") && m_CurrentMagazineAmount > 0){
            Instantiate(m_Bullet, m_BulletSpawnPoint.position,
                m_BulletSpawnPoint.rotation);
            m_CurrentMagazineAmount--;

        }

    } 
    public void AddBulets(int amount)
    {
        m_CurrentAmmoAmount =
            Mathf.Clamp(m_CurrentAmmoAmount + amount, 0,
            m_MaxAmmo);
    }
        
}

Edited by gu2ma

Share this post


Link to post
Share on other sites

@gu2ma, Tak - Kamera jako cel ma obranego bohatera, który opada na platformę. Jak ustawię, że kamera ma podążać za platformą, to dalej nic się nie wyświetla.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...