
GDD:
KLÍČE:
-
U rokytky vedle Bobra
-
V odpadkách u bariéry u billy
-
za pomníkem bohumila hrabala
-
Na parkovišti pod autem
-
Na parkovišti na autě
-
U Jindřišky
-
V autobuse
-
Na volném Parkovacím místě
-
U pomníku druhé světové války
-
V synagoze u vstupu
-
V synagoze u oltáře
-
V metru u pizzy
-
V Popelnici
-
V trolejbusu
-
před zš
-
Před domem
-
před tobiášem
-
u Pošty
-
v tobiášovi
Items:
-
Koktail molotov (při hodu na popelnice → začnou hořet)
-
Nůž (poškození*2,5)
-
Sekanec (doplní jídlo o 100%)
-
rohlík (doplní jídlo o 25%, možnost tím krmit bobry)
-
šílený vlk (spánek 40%)
-
Kvas (pití o 50 %)
-
Peníze (prostě peníze)
-
klíč (19 částí a dostane se do domu)
-
Jägermaister (pití 100%)
Assety
katedrala místo synagogy
Videa:
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!");
}
}
}
}