NemProgrammering.dk logo

Turret del 4

3D spiludvikling med Unity » Turret del 4 # 18
Denne video kræver medlemskab
Læs mere!
Turret del 4
Inkluderet:
Livstidsadgang
40 videolektioner
7 timers undervisning
Stil spørgsmål
Kursusbevis

Information om denne video

Underviser: Christian 'Code' Skriver Kragegaard   Video: 11:26   Lektion nr. 18 af 40

I denne video gør vi sådan at spilleren kan spawne en turret ved at trykke på “E” og sørger for at det koster et bestemt antal ressourcer for at spawne den.

Spørgsmål og kommentarer

Kun medlemmer med adgang til dette kursus kan stille spørgsmål og kommentere. Bliv medlem her!

  • Aldin B. siger:

    Efter jeg tilføjer:
    if (ResourceControllerRef.AmountOfStone >= 50)
    og
    ResourceControllerRef.AddResource(-50, “stone”);

    så registrerer den at jeg mister 50 stone, men kan ikke fysisk se mit turret spawne. Før jeg tilføjede disse linjer af kode i scriptet kunne jeg godt se turret spawne fysisk. Hvad kan være galt? Har prøvet at restarte Unity, og den viser ingen fejl når jeg kører spillet eller i scriptet.

    1. Christian ". siger:

      Hej Aldin

      Prøv at fjerne dem igen og se om det virker og så prøv at tilføj igen.
      Er funktionen til at spawne også under “if (ResourceControllerRef.AmountOfStone >= 50)” ?
      Ellers kunne et screenshot af din kode (eller mere af scriptet) måske hjælpe mig :)

      1. Aldin B. siger:

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

        public class WeaponsController : MonoBehaviour{

        public Animator AxeAnimator;
        public LayerMask TurretHitMask;
        public ResourceController ResourceControllerRef;

        public GameObject TurretPrefab;
        public Camera FPSCamera;

        private float _axeInterval = 0.3f;

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

        }

        // Update is called once per frame
        void Update()
        {
        _axeInterval += Time.deltaTime;

        if (Input.GetKeyDown(KeyCode.E))
        {
        if (ResourceControllerRef.AmountOfStone >= 50)
        {
        ResourceControllerRef.AddResource(-50, “stone”);

        RaycastHit TerrainHit;

        if (Physics.Raycast(FPSCamera.transform.position, FPSCamera.transform.forward, out TerrainHit, 10, TurretHitMask))
        {
        GameObject SpawnedTurret = Instantiate(TurretPrefab) as GameObject;
        SpawnedTurret.transform.position = TerrainHit.point;
        SpawnedTurret.transform.forward = FPSCamera.transform.parent.transform.forward;
        }

        }

        }

        if(_axeInterval > 0.3f)

        if(Input.GetMouseButtonDown(0))
        {

        AxeAnimator.Play(“Axe_Swing”);
        _axeInterval = 0;

        RaycastHit hit;
        if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
        {

        if (hit.transform.tag == “Resource”) {
        hit.transform.GetComponent().Hit();
        }
        }
        }

        }
        }

        1. Christian ". siger:

          Og du har samlet over 50 sten ind? Prøv at ændre “ResourceControllerRef.AmountOfStone >= 50” til “ResourceControllerRef.AmountOfStone >= 0” for at se om du kan spawne på dit terrain.

          Husk at dit terrain også skal passe med TurretHitMask så den også kan ramme terrain.

          1. Aldin B. siger:

            Har fundet problemet nu, havde glemt at vælge terrain layer på terrænet, ups! :D

            Men nu opstår det problem så i stedet, at grafikken forsvinder fra terrain og det bliver helt gråt.

            1. Aldin B. siger:

              Nevermind, skulle tilvælge terrain culling mask på FirstPersonCharacter igen, ved ikke lige hvorfor den slog sig selv fra igen? :D

          2. Aldin B. siger:

            Tak for hjælpen!

            1. Christian ". siger:

              Tjah, nogen gange kan man glemme ting, det sker for mig hele tiden :D