增加功能

This commit is contained in:
2024-10-16 16:43:53 +08:00
parent 897058435c
commit 4920837ed7
10 changed files with 800 additions and 128 deletions

View File

@@ -0,0 +1,26 @@
using UnityEngine;
namespace Game.Component.EnemyFSM_AI
{
public class FollowFore : EnemyFSMState
{
public override void OnEnter ()
{
}
public override void OnUpdate ()
{
var playerEntityTransform = MapContent.Instance.PlayerEntity.transform;
// if (Vector2.Distance (playerEntityTransform.position , this.Entity.transform.position) <= this.Entity.TriggerDistance)
// {
// this.SetAiTarget (playerEntityTransform.position);
// }
// else
{
var forward = playerEntityTransform.up;
this.SetAiTarget (playerEntityTransform.position + forward * this.Entity.TriggerDistance);
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 91b9bec6145b4ffabdc28f44f3b3c053
timeCreated: 1729046548

View File

@@ -1,14 +1,34 @@
using UnityEngine;
using Framework.Utils.Extend;
using UnityEngine;
namespace Game.Component
{
public class PlayerEntity : MonoBehaviour
{
public float speed = 10;
public Rigidbody2D rigidbody2D;
public void OnMove (Vector2 vector)
{
this.transform.Translate (vector * speed * Time.deltaTime);
var t = this.transform;
// 获取前方方向的世界坐标
Vector3 forward = (Vector3)vector;
//根据遥感向量获取一个01的移动速度系数
float speedOffset = forward.magnitude;
Quaternion targetRotation = Quaternion.FromToRotation (Vector3.up , forward.normalized);
transform.rotation = Quaternion.Lerp (transform.rotation , targetRotation , 0.25f);
// Debug.DrawLine (transform.position , transform.position + forward , Color.magenta);
// this.transform.Translate ( Vector3.up * speedOffset * speed * Time.deltaTime);
this.rigidbody2D.MovePosition (t.position + ((Vector3)vector * speed * Time.deltaTime));
// Vector3 v = target.position - transform.position;
// v.z = 0; // 确保向量在2D平面上
// float angle = Vector3.SignedAngle(Vector3.up, v, Vector3.forward);
// Quaternion rotation = Quaternion.Euler(0, 0, angle);
t.position = t.position.SetZ (0);
}
public void OnMoveEnd ()
{
this.transform.rotation = Quaternion.Euler (0 , 0 , this.transform.rotation.eulerAngles.z);
}
}
}