NemProgrammering.dk logo
nordicway webhotel

Player Jump limit og lydeffekter

2D spiludvikling med Unity | Gratis danske videoguides
Unity 3D kursus

Information om denne video

Underviser: Christian 'Code' Skriver Kragegaard

I denne video sørger vi for at vores spiller ikke kan hoppe i luften ved at tjekke om den rammer jorden lige under os. Vi kommer også til at tilføje en lydeffekt til når vi samler vores pickup objekter op.

Video tags:

Denne video relaterer til emner såsom: Unity kursus, Unity tutorial, Unity vejledning, Unity spiludvikling for begyndere, lav dit eget spil med Unity, kursus for begyndere, introduktion til Unity, lær Unity at kende, GameObjects Unity, player spawn, lydeffekter, musik

Spørgsmål og kommentarer

Har du spørgsmål eller kommentarer? Så skriv herunder og vi eller en anden lœser vil svare hurtigst muligt!

Url´er bliver automatisk omdannet til links (nofollow).

kommentar på NemProgrammering.dk - lav din egen hjemmeside
Code    28-12-2019

Hej Michael Måske er distancetoground alt for stor? Der er i hvert fald noget som gør at "isGrounded" bliver ved med at være true - for er den det, så må den hoppe.


kommentar på NemProgrammering.dk - lav din egen hjemmeside
Michael    13-12-2019

Problemet er at når man hopper, kan man blive ved med at hoppe, selvom man er i luften.


kommentar på NemProgrammering.dk - lav din egen hjemmeside
Code    08-12-2019

Hej Michael Det er ikke pga. 2 to manglende layers. At gravity ikke fungerer må du gerne forklarer dybere. Er det fordi du ikke kan hoppe? Denne stykke kode: isGrounded = Physics2D.Raycast(transform.position, Vector2.down, DistanceToGround + 0.5f, Mask); Skyder et raycast ned mod jorden og hvis det rammer en collider med "Mask" (Det har du selv defineret i inspectoren, hvilket layer det omhandler - skulle gerne være alt andet end Player layer) så bliver "isGrounded" lig med true. Hvis det er fordi den ikke hopper igen, så skal du sørger for at din spiller har layeret "Player" og at den "Mask" variable, ikke har et flueben ved "Player".


kommentar på NemProgrammering.dk - lav din egen hjemmeside
Michael    06-12-2019

Når jeg mangler de 2 layers, så virker gravity ikke i unity Her er scriptet vi bruger using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { public float Speed; public float JumpPower; public LayerMask Mask; private Rigidbody2D RB; private float startJumpPower; private bool isGrounded; // Start is called before the first frame update void Start() { RB = GetComponent<Rigidbody2D>(); startJumpPower = JumpPower; } // Update is called once per frame void Update() { Vector2 movement = new Vector2(0, RB.velocity.y); float DistanceToGround = GetComponent<Collider2D>().bounds.extents.y; isGrounded = Physics2D.Raycast(transform.position, Vector2.down, DistanceToGround + 0.5f, Mask); if (Input.GetKey(KeyCode.A)) { movement.x = -Speed*Time.deltaTime; } else if(Input.GetKey(KeyCode.D)) { movement.x = Speed*Time.deltaTime; } if (Input.GetKeyDown(KeyCode.W) && isGrounded == true) { RB.AddForce(new Vector2(0, JumpPower)); isGrounded = false; } RB.velocity = movement; } public void OnCollisionStay2D(Collision2D collision) { isGrounded = true; } public void JumpPowerUp(float seconds, float Power) { StartCoroutine(RunJumpPowerup(seconds, Power)); } IEnumerator RunJumpPowerup(float seconds, float Power) { JumpPower = Power; yield return new WaitForSeconds(seconds); JumpPower = startJumpPower; } }


kommentar på NemProgrammering.dk - lav din egen hjemmeside
Code    02-12-2019

Hej Michael Det er fordi jeg har tilføjet to ekstra layers end I har. Jeg kan ikke huske hvorfor jeg har lavet et layer til "compass", men den til postprocessing kan være fordi jeg har importeret noget udenom videoerne. Uanset bør det ikke gøre noget for spillet at de ikke er med :)


kommentar på NemProgrammering.dk - lav din egen hjemmeside
Michael Juhl Nielsen    22-11-2019

Vi er nået til 16 i Unity-kurset. Men du har 2 menupunkter flere end os i Player Movement, nemlig: Post-processing og compass og player. Hvordan kan det være at vi ikke har det?