• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podążanie NPC za graczem podczas kolizji

VPS Starter Arubacloud
0 głosów
160 wizyt
pytanie zadane 6 lutego 2021 w OpenGL, Unity przez Batyskaf Nowicjusz (120 p.)
zmienione kategorie 6 lutego 2021 przez Arkadiusz Waluk

Dopiero zaczynam zabawę z silnikiem Unity - nigdy nie programowałem. Mam pytanie - co zrobić, żeby NPC podążał za Playerem, gdy ten wejdzie w promień "Player Check"?

Poniżej kod dodany do NPC:

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

public class NPC_1 : MonoBehaviour
{

    public float moveSpeed;

    private Rigidbody2D myRigidbody;

    public bool isWalking;

    public float walkTime;
    private float walkCounter;
    public float waitTime;
    private float waitCounter;
    private int WalkDirection;

    public Transform PlayerCheck;
    public float PlayerCheckRadius;
    private bool playerFind;

    public Transform AtackCheck;
    public float AtackCheckRadius;
    public LayerMask WhatIsPlayer;
    private bool atack;

    private bool grouned;

    public Transform groundCheck;
    public float groundCheckRadius;
    public LayerMask WhatIsGround;
    


    private Animator anim;




    // Start is called before the first frame update
    void Start()
    {


        anim = GetComponent<Animator>();

        myRigidbody = GetComponent<Rigidbody2D>();

        waitCounter = waitTime;
        walkCounter = walkTime;

    }

  
    private void FixedUpdate()
    {

    atack = Physics2D.OverlapCircle(AtackCheck.position, AtackCheckRadius, WhatIsPlayer);
    grouned = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, WhatIsGround);
    playerFind = Physics2D.OverlapCircle(PlayerCheck.position, PlayerCheckRadius, WhatIsPlayer);


    }


    // Update is called once per frame
    void Update()
    {

        if (playerFind)
        {
        }


        if (atack)
        {
            anim.SetBool("Atack", atack);

        }

       if (grouned)
       {
            switch (WalkDirection)
            {
                case 0:
                    myRigidbody.velocity = new Vector2(-moveSpeed, 0);
                    break;

                case 1:
                    myRigidbody.velocity = new Vector2(0, moveSpeed);
                    break;


                case 2:
                    myRigidbody.velocity = new Vector2(moveSpeed, 0);
                    break;

                case 3:
                    myRigidbody.velocity = new Vector2(0, -moveSpeed);
                    break;
            }
            }

        if (isWalking)
        {
            walkCounter -= Time.deltaTime;

            if(walkCounter <0)
            {

                isWalking = false;
                waitCounter = waitTime;

            }
            
            switch(WalkDirection)
            {
                case 0:
                    myRigidbody.velocity = new Vector2(-moveSpeed, 0);
                    break;

                case 1:
                    myRigidbody.velocity = new Vector2(0, moveSpeed);
                    break;

                
                case 2:
                    myRigidbody.velocity = new Vector2(moveSpeed, 0);
                    break;

                case 3:
                    myRigidbody.velocity = new Vector2(0, -moveSpeed);
                    break;

            }
        }
        else
        {
            waitCounter -= Time.deltaTime;

            myRigidbody.velocity = Vector2.zero;

            if(waitCounter <0)
            {
                ChooseDirection();
            }
        }
    }

    public void ChooseDirection()
    {
        WalkDirection = Random.Range (0, 4);
        isWalking = true;
        walkCounter = walkTime;

        Random.Range(10, 170);



    }

}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 1,896 wizyt
pytanie zadane 22 lutego 2017 w OpenGL, Unity przez Emil Panecki Bywalec (2,100 p.)
0 głosów
1 odpowiedź 792 wizyt
pytanie zadane 2 września 2018 w OpenGL, Unity przez Yashe Dyskutant (7,720 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...