faet(fallDamage): 实现玩家的摔落伤害
This commit is contained in:
@@ -402,6 +402,84 @@ PrefabInstance:
|
|||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
m_AddedComponents: []
|
m_AddedComponents: []
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: ddd89e93db279184daa80d86bd4e770f, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: ddd89e93db279184daa80d86bd4e770f, type: 3}
|
||||||
|
--- !u!1001 &627238400
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 25.97
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: -5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3535959014221630543, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: sendSignalMode
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3535959014221630543, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: controlTarget.Array.data[0]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 279470472}
|
||||||
|
- target: {fileID: 6268190613584218029, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: Console (1)
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 85652dd0e36597644aa5b3bc9603797b, type: 3}
|
||||||
--- !u!1001 &865274353
|
--- !u!1001 &865274353
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -1369,7 +1447,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
value: 25
|
value: 23.94
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
- target: {fileID: 40184683368772887, guid: 85652dd0e36597644aa5b3bc9603797b,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -2450,4 +2528,5 @@ SceneRoots:
|
|||||||
- {fileID: 1549323716}
|
- {fileID: 1549323716}
|
||||||
- {fileID: 2110019781}
|
- {fileID: 2110019781}
|
||||||
- {fileID: 730184548946979397}
|
- {fileID: 730184548946979397}
|
||||||
|
- {fileID: 627238400}
|
||||||
- {fileID: 3372472533242412945}
|
- {fileID: 3372472533242412945}
|
||||||
|
|||||||
@@ -30,6 +30,11 @@ namespace Script.Gameplay.Player
|
|||||||
private bool isGrounded;
|
private bool isGrounded;
|
||||||
private IInputManager inputManager;
|
private IInputManager inputManager;
|
||||||
|
|
||||||
|
private float lastGroundY;
|
||||||
|
private bool wasGroundedLastFrame;
|
||||||
|
[Tooltip("从高处落下时的伤害阈值(米)")]
|
||||||
|
[SerializeField] private float fallDamageThreshold = 3f; //伤害阈值
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
characterController = GetComponent<CharacterController>();
|
characterController = GetComponent<CharacterController>();
|
||||||
@@ -46,6 +51,32 @@ namespace Script.Gameplay.Player
|
|||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
|
// 地面检测
|
||||||
|
bool isCurrentlyGrounded = groundCheck != null
|
||||||
|
? Physics.CheckSphere(groundCheck.position, groundDistance, groundMask)
|
||||||
|
: characterController.isGrounded;
|
||||||
|
|
||||||
|
// 记录离开地面时的高度
|
||||||
|
if (wasGroundedLastFrame && !isCurrentlyGrounded)
|
||||||
|
{
|
||||||
|
lastGroundY = transform.position.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 落地检测
|
||||||
|
if (!wasGroundedLastFrame && isCurrentlyGrounded)
|
||||||
|
{
|
||||||
|
float fallHeight = lastGroundY - transform.position.y;
|
||||||
|
if (fallHeight > fallDamageThreshold) // 3米为伤害阈值,可调整
|
||||||
|
{
|
||||||
|
int damage = Mathf.RoundToInt((fallHeight - 3f) * 10); // 每超出1米伤害10点
|
||||||
|
var playerController = GetComponent<PlayerController>();
|
||||||
|
if (playerController != null)
|
||||||
|
playerController.TakeDamage(damage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wasGroundedLastFrame = isCurrentlyGrounded;
|
||||||
|
|
||||||
// 地面检测
|
// 地面检测
|
||||||
if (groundCheck != null)
|
if (groundCheck != null)
|
||||||
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
|
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
|
||||||
|
|||||||
Reference in New Issue
Block a user