GDD:

https://spsejecnacz-my.sharepoint.com/:w:/g/personal/basseville_spsejecna_cz/EXFeIYJT9G9PufWhJGQO1tUBcajkJzp8vWsOpPz5YyEtYQ?e=bUvlag

KLÍČE:

  1. U rokytky vedle Bobra

  2. V odpadkách u bariéry u billy

  3. za pomníkem bohumila hrabala

  4. Na parkovišti pod autem

  5. Na parkovišti na autě

  6. U Jindřišky

  7. V autobuse

  8. Na volném Parkovacím místě

  9. U pomníku druhé světové války

  10. V synagoze u vstupu

  11. V synagoze u oltáře

  12. V metru u pizzy

  13. V Popelnici

  14. V trolejbusu

  15. před zš

  16. Před domem

  17. před tobiášem

  18. u Pošty

  19. v tobiášovi

Items:

  1. Koktail molotov (při hodu na popelnice → začnou hořet)

  2. Nůž (poškození*2,5)

  3. Sekanec (doplní jídlo o 100%)

  4. rohlík (doplní jídlo o 25%, možnost tím krmit bobry)

  5. šílený vlk (spánek 40%)

  6. Kvas (pití o 50 %)

  7. Peníze (prostě peníze)

  8. klíč (19 částí a dostane se do domu)

  9. Jägermaister (pití 100%)

Assety

tramvaj 2

dum

dum2

Palmovka

Koš

popelnice

katedrala místo synagogy

keř

Palmovka

palma

dum4

Značení ulic (2€)

ukazatel zastávek (2€)

zastávka(1€)

dum5

Plechovka

Videa:

jizda na kolejích

otevírání dveří

chůze

Házení

Oheň

looting a inventář

Nestiham

nějaké npc

dořešit věc s životy v skriptu chybí

graficky upravit
když seberu něco první tak se mi to přidá jednou ale když něco potom tak se mi to přidá dvakrát??

(když mě přejede tramvaj tak umřu…. (nevim proč to předtím nefungovalo/fungovalo moc velky collision box))s tímto skriptem

using UnityEngine;
using UnityEngine.Splines;
 
[RequireComponent(typeof(Rigidbody), typeof(BoxCollider))]
public class TramController : MonoBehaviour
{
    [Header("Movement Settings")]
    public SplineContainer railSpline;
    public float speed = 0.4f;
    public float sidewaysOffset = 5f;
    public float damageOnCollision = 100f; // Okamžitě zabije hráče
 
    [Header("Station Settings")]
    public Vector3[] zastavkyPositions;
    public float stopTime = 6f;
    
    private float t = 6f;
    private Vector3 startPosition = new Vector3(0, 0, -225);
    private Quaternion initialRotation = Quaternion.Euler(0, 90, 0);
    private int currentStationIndex = 0;
    private float stopTimer = 0f;
    private bool isStopping = false;
    private Rigidbody rb;
 
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.isKinematic = false;
        rb.useGravity = false;
        rb.mass = 10000; // Velká hmotnost pro realistické kolize
 
        // Nastavení collideru
        BoxCollider collider = GetComponent<BoxCollider>();
        collider.isTrigger = false;
        collider.size = new Vector3(3, 2.5f, 8); // Přizpůj velikost modelu tramvaje
 
        if (railSpline == null || railSpline.Spline == null) return;
 
        Vector3 initialSplinePosition = (Vector3)railSpline.Spline.EvaluatePosition(0f);
        Vector3 initialTangent = (Vector3)railSpline.Spline.EvaluateTangent(0f);
        transform.position = startPosition + initialSplinePosition;
        transform.rotation = Quaternion.LookRotation(initialTangent, Vector3.up) * initialRotation;
    }
 
    void Update()
    {
        if (isStopping)
        {
            stopTimer += Time.deltaTime;
            if (stopTimer >= stopTime) isStopping = false;
            return;
        }
 
        if (railSpline == null || railSpline.Spline == null) return;
 
        t += speed * Time.deltaTime;
        if (t > 1f) t = 0f;
 
        Vector3 position = startPosition + (Vector3)railSpline.Spline.EvaluatePosition(t);
        Vector3 tangent = (Vector3)railSpline.Spline.EvaluateTangent(t);
 
        if (currentStationIndex < zastavkyPositions.Length)
        {
            float distanceToStation = Vector3.Distance(position, zastavkyPositions[currentStationIndex]);
            if (distanceToStation < 2f)
            {
                isStopping = true;
                stopTimer = 0f;
                currentStationIndex = (currentStationIndex + 1) % zastavkyPositions.Length;
            }
        }
 
        Vector3 perpendicularDirection = Vector3.Cross(Vector3.up, tangent).normalized;
        position += perpendicularDirection * sidewaysOffset;
        position.y = 1.05f;
 
        rb.MovePosition(position);
        rb.MoveRotation(Quaternion.LookRotation(tangent, Vector3.up) * initialRotation);
    }
 
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            PlayerStats player = collision.gameObject.GetComponent<PlayerStats>();
            if (player != null)
            {
                player.TakeDamage(damageOnCollision);
                Debug.Log("Tramvaj zabila hráče!");
            }
        }
    }
}