Added basic jump mechanic for slimes and prevention from going over the border, added tile hiding to increase performance

This commit is contained in:
finnchen123 2025-11-16 20:56:51 +01:00
parent c00a01c8d6
commit a8cca74fc4
10 changed files with 136 additions and 33 deletions

View File

@ -116,10 +116,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4392939395195199552}
serializedVersion: 4
serializedVersion: 5
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
@ -134,7 +134,7 @@ Rigidbody:
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 122
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &-9044075018784067105
MonoBehaviour:
@ -150,3 +150,4 @@ MonoBehaviour:
m_EditorClassIdentifier:
clip: {fileID: 0}
keepAlive: 0
slimeType: 0

View File

@ -116,10 +116,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7849292920502973565}
serializedVersion: 4
serializedVersion: 5
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
@ -134,7 +134,7 @@ Rigidbody:
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 122
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &525370201721428245
MonoBehaviour:

View File

@ -116,10 +116,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 379562847455873462}
serializedVersion: 4
serializedVersion: 5
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
@ -134,7 +134,7 @@ Rigidbody:
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 122
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &4274648213253980113
MonoBehaviour:

View File

@ -116,10 +116,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6968562527232053028}
serializedVersion: 4
serializedVersion: 5
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
@ -134,7 +134,7 @@ Rigidbody:
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 122
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &3695996598061783199
MonoBehaviour:

View File

@ -116,10 +116,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 710453253311522916}
serializedVersion: 4
serializedVersion: 5
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
@ -134,7 +134,7 @@ Rigidbody:
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 122
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &6506905793749053412
MonoBehaviour:

View File

@ -116,10 +116,10 @@ Rigidbody:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7591882314654710750}
serializedVersion: 4
serializedVersion: 5
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
@ -134,7 +134,7 @@ Rigidbody:
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 122
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &-1716680456059707178
MonoBehaviour:

View File

@ -6,6 +6,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
namespace Assets.Scripts.InteractableObjects
{
@ -15,6 +16,53 @@ namespace Assets.Scripts.InteractableObjects
BasicSlime slime;
SlimeFactory factory = new SlimeFactory();
public SlimeType slimeType;
bool isJumping;
Stopwatch jumpTimer;
// Start is called before the first frame update
void Start()
{
isJumping = false;
jumpTimer = new Stopwatch();
//Nothing
}
// Update is called once per frame
void Update()
{
if (gameObject.activeSelf)
{
if (!isJumping)
{
jumpTimer.Start();
isJumping = true;
gameObject.GetComponent<Rigidbody>().AddForce(new Vector3(rand.Next(-5, 5), 10, rand.Next(-5, 5)), ForceMode.Impulse);
//gameObject.GetComponent<Rigidbody>().AddForce(new Vector3(5, 10, 5), ForceMode.Impulse);
}
if (jumpTimer.ElapsedMilliseconds >= 5000)
{
jumpTimer.Reset();
isJumping = false;
}
if (gameObject.transform.position.x > 1000 || gameObject.transform.position.x > 5000 || gameObject.transform.position.x > 5000)
{
UnityEngine.Debug.Log("BUG!");
}
}
}
void OnTriggerExit(Collider col)
{
if (col.name.Contains("_") && col.gameObject == gameObject.transform.parent.gameObject)
{
gameObject.GetComponent<Rigidbody>().AddForce(gameObject.GetComponent<Rigidbody>().linearVelocity * -2, ForceMode.Impulse);
}
}
void OnDisable()
{
}
public override void handleInteraction(GameObject player)
{

View File

@ -224,15 +224,8 @@ namespace Assets.Scripts.Player
{
worldGenerator.changeCurrentTile(col.gameObject);
worldGenerator.createTile(new Vector3(-1, 0, 0));
worldGenerator.createTile(new Vector3(1, 0, 0));
worldGenerator.createTile(new Vector3(0, 0, 1));
worldGenerator.createTile(new Vector3(0, 0, -1));
worldGenerator.createTile(new Vector3(-1, 0, -1));
worldGenerator.createTile(new Vector3(1, 0, -1));
worldGenerator.createTile(new Vector3(-1, 0, 1));
worldGenerator.createTile(new Vector3(1, 0, 1));
worldGenerator.generateMissingTiles();
worldGenerator.hideFarTiles();
}
if (col.name.Contains("House"))

View File

@ -29,6 +29,16 @@ public class Tile : MonoBehaviour
}
public void show()
{
gameObject.SetActive(true);
}
public void hide()
{
gameObject.SetActive(false);
}
public void generateContent()
{
foreach (Vector3 position in getSpawnLocations())

View File

@ -96,6 +96,57 @@ public class WorldGenerator : MonoBehaviour
newTile.GetComponent<Tile>().generateTile(pos, (TileType)Enum.Parse(typeof(TileType), newTile.name.Split("_")[0]));
tiles.Add(pos, newTile);
}
else
{
tiles[pos].GetComponent<Tile>().show();
}
}
public void hideTile(Vector3 requiredPosition)
{
Vector3 pos = currentTile.GetComponent<Tile>().getPosition() + requiredPosition;
if (tiles.ContainsKey(pos) && pos.y == 0)
{
tiles[pos].GetComponent<Tile>().hide();
}
}
public void generateMissingTiles()
{
createTile(new Vector3(-1, 0, 0));
createTile(new Vector3(1, 0, 0));
createTile(new Vector3(0, 0, 1));
createTile(new Vector3(0, 0, -1));
createTile(new Vector3(-1, 0, -1));
createTile(new Vector3(1, 0, -1));
createTile(new Vector3(-1, 0, 1));
createTile(new Vector3(1, 0, 1));
}
public void hideFarTiles()
{
hideTile(new Vector3(-2, 0, -2));
hideTile(new Vector3(-2, 0, -1));
hideTile(new Vector3(-2, 0, 0));
hideTile(new Vector3(-2, 0, 1));
hideTile(new Vector3(-2, 0, 2));
hideTile(new Vector3(2, 0, -2));
hideTile(new Vector3(2, 0, -1));
hideTile(new Vector3(2, 0, 0));
hideTile(new Vector3(2, 0, 1));
hideTile(new Vector3(2, 0, 2));
hideTile(new Vector3(-1, 0, -2));
hideTile(new Vector3(0, 0, -2));
hideTile(new Vector3(1, 0, -2));
hideTile(new Vector3(2, 0, -2));
hideTile(new Vector3(-2, 0, 2));
hideTile(new Vector3(-1, 0, 2));
hideTile(new Vector3(0, 0, 2));
hideTile(new Vector3(1, 0, 2));
}
public void changeCurrentTile(GameObject newCurrent)