Bug fixes
This commit is contained in:
parent
07626aa550
commit
7bec58ece8
@ -100092,7 +100092,7 @@ GameObject:
|
|||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 630530476}
|
- component: {fileID: 630530476}
|
||||||
m_Layer: 0
|
m_Layer: 8
|
||||||
m_Name: AbilityCastPoint
|
m_Name: AbilityCastPoint
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
@ -355507,11 +355507,21 @@ PrefabInstance:
|
|||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransformParent: {fileID: 0}
|
m_TransformParent: {fileID: 0}
|
||||||
m_Modifications:
|
m_Modifications:
|
||||||
|
- target: {fileID: 2191382144852172495, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Layer
|
||||||
|
value: 8
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3960509566317876621, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
|
- target: {fileID: 3960509566317876621, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
value: Character
|
value: Character
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3960509566317876621, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Layer
|
||||||
|
value: 8
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4580555029999605212, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
|
- target: {fileID: 4580555029999605212, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: manaFillImage
|
propertyPath: manaFillImage
|
||||||
|
@ -71,6 +71,7 @@ public class FirstPersonController: MonoBehaviour
|
|||||||
[SerializeField] private AudioClip[] stoneClips = default;
|
[SerializeField] private AudioClip[] stoneClips = default;
|
||||||
[SerializeField] private AudioClip[] waterClips = default;
|
[SerializeField] private AudioClip[] waterClips = default;
|
||||||
[SerializeField] private AudioClip[] grassClips = default;
|
[SerializeField] private AudioClip[] grassClips = default;
|
||||||
|
public Camera PlayerCamera => playerCamera;
|
||||||
|
|
||||||
private float footstepTimer = 0;
|
private float footstepTimer = 0;
|
||||||
private float GetCurrentOffset => isCrouching ? baseStepSpeed * crouchStepMultiplier : isSprinting ? baseStepSpeed * sprintStepMultiplier : baseStepSpeed;
|
private float GetCurrentOffset => isCrouching ? baseStepSpeed * crouchStepMultiplier : isSprinting ? baseStepSpeed * sprintStepMultiplier : baseStepSpeed;
|
||||||
|
@ -13,7 +13,7 @@ GameObject:
|
|||||||
- component: {fileID: 4256647660557216355}
|
- component: {fileID: 4256647660557216355}
|
||||||
- component: {fileID: 6161152517530157023}
|
- component: {fileID: 6161152517530157023}
|
||||||
- component: {fileID: 6947929681936346855}
|
- component: {fileID: 6947929681936346855}
|
||||||
m_Layer: 0
|
m_Layer: 7
|
||||||
m_Name: PF_Fireball
|
m_Name: PF_Fireball
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
@ -142,10 +142,26 @@ PrefabInstance:
|
|||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransformParent: {fileID: 7202875268415372754}
|
m_TransformParent: {fileID: 7202875268415372754}
|
||||||
m_Modifications:
|
m_Modifications:
|
||||||
|
- target: {fileID: 112572, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
||||||
|
propertyPath: m_Layer
|
||||||
|
value: 7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 126572, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
||||||
|
propertyPath: m_Layer
|
||||||
|
value: 7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 147436, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
- target: {fileID: 147436, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
value: FireballMissileFire
|
value: FireballMissileFire
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 147436, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
||||||
|
propertyPath: m_Layer
|
||||||
|
value: 7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 166048, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
||||||
|
propertyPath: m_Layer
|
||||||
|
value: 7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 460430, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
- target: {fileID: 460430, guid: 3b671081e44be1c4aa4355e8ba6e8a5e, type: 3}
|
||||||
propertyPath: m_LocalScale.x
|
propertyPath: m_LocalScale.x
|
||||||
value: 2
|
value: 2
|
||||||
|
@ -12,14 +12,50 @@ public class FireballAbility : Ability
|
|||||||
{
|
{
|
||||||
if (!user || !projectilePrefab) return;
|
if (!user || !projectilePrefab) return;
|
||||||
|
|
||||||
var go = Instantiate(projectilePrefab, user.CastPos(), Quaternion.LookRotation(user.Forward()));
|
// 1) Figure out an aim direction that includes camera pitch
|
||||||
var rb = go.GetComponent<Rigidbody>();
|
// Try to use an "aim camera" on the user if you have one; otherwise Camera.main.
|
||||||
if (rb) rb.velocity = user.Forward() * speed;
|
Camera cam = null;
|
||||||
|
if (Polyart.FirstPersonController.instance)
|
||||||
|
cam = Polyart.FirstPersonController.instance.PlayerCamera;
|
||||||
|
if (!cam) cam = Camera.main;
|
||||||
|
|
||||||
|
|
||||||
|
Vector3 castPos = user.CastPos();
|
||||||
|
Vector3 dir = user.Forward(); // safe fallback
|
||||||
|
|
||||||
|
if (cam)
|
||||||
|
{
|
||||||
|
// Ray from camera forward
|
||||||
|
Ray ray = new Ray(cam.transform.position, cam.transform.forward);
|
||||||
|
|
||||||
|
// If we hit something, aim at that point; otherwise aim far away
|
||||||
|
Vector3 targetPoint;
|
||||||
|
if (Physics.Raycast(ray, out RaycastHit hit, 1000f, ~0, QueryTriggerInteraction.Ignore))
|
||||||
|
targetPoint = hit.point;
|
||||||
|
else
|
||||||
|
targetPoint = ray.origin + ray.direction * 1000f;
|
||||||
|
|
||||||
|
dir = (targetPoint - castPos).normalized;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2) Spawn & orient the projectile along that 3D direction
|
||||||
|
var go = Instantiate(projectilePrefab, castPos, Quaternion.LookRotation(dir));
|
||||||
|
|
||||||
|
// 3) Give it velocity along the aimed direction
|
||||||
|
var rb = go.GetComponent<Rigidbody>();
|
||||||
|
if (rb)
|
||||||
|
{
|
||||||
|
rb.velocity = dir * speed; // or: rb.AddForce(dir * speed, ForceMode.VelocityChange);
|
||||||
|
rb.useGravity = false; // optional: keep straight flight
|
||||||
|
rb.collisionDetectionMode = CollisionDetectionMode.Continuous; // nicer for fast shots
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4) Damage component (unchanged)
|
||||||
var dmg = go.GetComponent<ProjectileDamage>();
|
var dmg = go.GetComponent<ProjectileDamage>();
|
||||||
if (!dmg) dmg = go.AddComponent<ProjectileDamage>();
|
if (!dmg) dmg = go.AddComponent<ProjectileDamage>();
|
||||||
dmg.damage = damage;
|
dmg.damage = damage;
|
||||||
|
|
||||||
Destroy(go, lifeTime);
|
Destroy(go, lifeTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -14,19 +14,47 @@ public class FreezeShardAbility : Ability
|
|||||||
{
|
{
|
||||||
if (!user || !projectilePrefab) return;
|
if (!user || !projectilePrefab) return;
|
||||||
|
|
||||||
var pos = user.CastPos() + user.Forward() * spawnOffset;
|
// Get player camera (from FPS controller or fallback to Camera.main)
|
||||||
var rot = Quaternion.LookRotation(user.Forward());
|
Camera cam = null;
|
||||||
var go = Instantiate(projectilePrefab, pos, rot);
|
if (Polyart.FirstPersonController.instance)
|
||||||
|
cam = Polyart.FirstPersonController.instance.GetComponentInChildren<Camera>();
|
||||||
|
if (!cam) cam = Camera.main;
|
||||||
|
|
||||||
|
// Start slightly in front of the cast position
|
||||||
|
Vector3 castPos = user.CastPos() + user.Forward() * spawnOffset;
|
||||||
|
|
||||||
|
// Default direction if no camera found
|
||||||
|
Vector3 dir = user.Forward();
|
||||||
|
|
||||||
|
if (cam)
|
||||||
|
{
|
||||||
|
// Ray from camera forward
|
||||||
|
Ray ray = new Ray(cam.transform.position, cam.transform.forward);
|
||||||
|
|
||||||
|
Vector3 targetPoint;
|
||||||
|
if (Physics.Raycast(ray, out RaycastHit hit, 1000f, ~0, QueryTriggerInteraction.Ignore))
|
||||||
|
targetPoint = hit.point;
|
||||||
|
else
|
||||||
|
targetPoint = ray.origin + ray.direction * 1000f;
|
||||||
|
|
||||||
|
dir = (targetPoint - castPos).normalized;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spawn projectile oriented to camera direction
|
||||||
|
var go = Instantiate(projectilePrefab, castPos, Quaternion.LookRotation(dir));
|
||||||
|
|
||||||
|
// Push it forward
|
||||||
var rb = go.GetComponent<Rigidbody>();
|
var rb = go.GetComponent<Rigidbody>();
|
||||||
if (rb) rb.velocity = user.Forward() * speed;
|
if (rb) rb.velocity = dir * speed;
|
||||||
|
|
||||||
|
// Apply freeze shard properties
|
||||||
var shard = go.GetComponent<FreezeShardProjectile>();
|
var shard = go.GetComponent<FreezeShardProjectile>();
|
||||||
if (!shard) shard = go.AddComponent<FreezeShardProjectile>();
|
if (!shard) shard = go.AddComponent<FreezeShardProjectile>();
|
||||||
shard.damage = damage;
|
shard.damage = damage;
|
||||||
shard.freezeDuration = freezeDuration;
|
shard.freezeDuration = freezeDuration;
|
||||||
shard.ownerRoot = user.transform;
|
shard.ownerRoot = user.transform;
|
||||||
|
|
||||||
|
// Ignore collisions with the caster
|
||||||
var projCol = go.GetComponent<Collider>();
|
var projCol = go.GetComponent<Collider>();
|
||||||
if (projCol)
|
if (projCol)
|
||||||
{
|
{
|
||||||
@ -36,4 +64,5 @@ public class FreezeShardAbility : Ability
|
|||||||
|
|
||||||
Destroy(go, lifeTime);
|
Destroy(go, lifeTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -25,5 +25,6 @@ public class AbilityUser : MonoBehaviour
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Vector3 Forward() => castPoint ? castPoint.forward : transform.forward;
|
public Vector3 Forward() => castPoint ? castPoint.forward : transform.forward;
|
||||||
|
public Vector3 Upward() => castPoint ? castPoint.up : transform.up;
|
||||||
public Vector3 CastPos() => castPoint ? castPoint.position : transform.position;
|
public Vector3 CastPos() => castPoint ? castPoint.position : transform.position;
|
||||||
}
|
}
|
@ -3,10 +3,11 @@
|
|||||||
--- !u!55 &1
|
--- !u!55 &1
|
||||||
PhysicsManager:
|
PhysicsManager:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
serializedVersion: 13
|
serializedVersion: 14
|
||||||
m_Gravity: {x: 0, y: -9.81, z: 0}
|
m_Gravity: {x: 0, y: -9.81, z: 0}
|
||||||
m_DefaultMaterial: {fileID: 0}
|
m_DefaultMaterial: {fileID: 0}
|
||||||
m_BounceThreshold: 2
|
m_BounceThreshold: 2
|
||||||
|
m_DefaultMaxDepenetrationVelocity: 10
|
||||||
m_SleepThreshold: 0.005
|
m_SleepThreshold: 0.005
|
||||||
m_DefaultContactOffset: 0.01
|
m_DefaultContactOffset: 0.01
|
||||||
m_DefaultSolverIterations: 6
|
m_DefaultSolverIterations: 6
|
||||||
@ -17,10 +18,11 @@ PhysicsManager:
|
|||||||
m_ClothInterCollisionDistance: 0.1
|
m_ClothInterCollisionDistance: 0.1
|
||||||
m_ClothInterCollisionStiffness: 0.2
|
m_ClothInterCollisionStiffness: 0.2
|
||||||
m_ContactsGeneration: 1
|
m_ContactsGeneration: 1
|
||||||
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
m_LayerCollisionMatrix: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
m_AutoSimulation: 1
|
m_SimulationMode: 0
|
||||||
m_AutoSyncTransforms: 0
|
m_AutoSyncTransforms: 0
|
||||||
m_ReuseCollisionCallbacks: 1
|
m_ReuseCollisionCallbacks: 1
|
||||||
|
m_InvokeCollisionCallbacks: 1
|
||||||
m_ClothInterCollisionSettingsToggle: 0
|
m_ClothInterCollisionSettingsToggle: 0
|
||||||
m_ClothGravity: {x: 0, y: -9.81, z: 0}
|
m_ClothGravity: {x: 0, y: -9.81, z: 0}
|
||||||
m_ContactPairsMode: 0
|
m_ContactPairsMode: 0
|
||||||
@ -32,5 +34,7 @@ PhysicsManager:
|
|||||||
m_FrictionType: 0
|
m_FrictionType: 0
|
||||||
m_EnableEnhancedDeterminism: 0
|
m_EnableEnhancedDeterminism: 0
|
||||||
m_EnableUnifiedHeightmaps: 1
|
m_EnableUnifiedHeightmaps: 1
|
||||||
|
m_ImprovedPatchFriction: 0
|
||||||
m_SolverType: 0
|
m_SolverType: 0
|
||||||
m_DefaultMaxAngularSpeed: 50
|
m_DefaultMaxAngularSpeed: 50
|
||||||
|
m_FastMotionThreshold: 3.4028235e+38
|
||||||
|
@ -12,8 +12,8 @@ TagManager:
|
|||||||
- Water
|
- Water
|
||||||
- UI
|
- UI
|
||||||
- WalkableStreet
|
- WalkableStreet
|
||||||
-
|
- Fireball
|
||||||
-
|
- Player
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
Loading…
x
Reference in New Issue
Block a user