任务:搭建第二关的框架
场景【测试】 1.使投掷物落地后会发出声音(逻辑上)并且停止滚动 2.使敌人听到投掷物落地的声音后,奔向落点 老泪纵横,出现了很多Bug,终于修完了,对不起,我明天一定做完所有游戏系统,做不完请买开发加速卡。 加油吧,加油了吗?
This commit is contained in:
parent
d6b89f7b89
commit
46a16145bf
@ -42,8 +42,8 @@ Material:
|
|||||||
- WaveCount: 50
|
- WaveCount: 50
|
||||||
- WaveIntensity_1: 0.02
|
- WaveIntensity_1: 0.02
|
||||||
- WaveIntensity_2: 1
|
- WaveIntensity_2: 1
|
||||||
- WaveSpread_Value: 6.399998
|
- WaveSpread_Value: 0
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- Center: {r: 0.6742085, g: 0.2503847, b: 0, a: 0}
|
- Center: {r: 0.13730037, g: 0.24812932, b: 0, a: 0}
|
||||||
- Vector2_d2d098295fc146f08b921b231b2e5199: {r: 1.6, g: 0.9, b: 0, a: 0}
|
- Vector2_d2d098295fc146f08b921b231b2e5199: {r: 1.6, g: 0.9, b: 0, a: 0}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
|
@ -2429,7 +2429,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 788577770}
|
m_GameObject: {fileID: 788577770}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: -28.36, y: -1.06, z: 0}
|
m_LocalPosition: {x: -27.07, y: -1.06, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 293805376}
|
m_Father: {fileID: 293805376}
|
||||||
@ -2763,8 +2763,9 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
point1: {fileID: 788577771}
|
point1: {fileID: 788577771}
|
||||||
point2: {fileID: 1209357885}
|
point2: {fileID: 1209357885}
|
||||||
walkSpeed: 0
|
walkSpeed: 5
|
||||||
rushSpeed: 1
|
rushSpeed: 10
|
||||||
|
speed: 0
|
||||||
missiles: []
|
missiles: []
|
||||||
--- !u!1 &969830747
|
--- !u!1 &969830747
|
||||||
GameObject:
|
GameObject:
|
||||||
@ -2983,7 +2984,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1209357884}
|
m_GameObject: {fileID: 1209357884}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: -15.22, y: -0.55, z: 0}
|
m_LocalPosition: {x: -19.31, y: -0.55, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 293805376}
|
m_Father: {fileID: 293805376}
|
||||||
@ -5495,7 +5496,7 @@ BoxCollider2D:
|
|||||||
adaptiveTiling: 0
|
adaptiveTiling: 0
|
||||||
m_AutoTiling: 0
|
m_AutoTiling: 0
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Size: {x: 1.45, y: 1.1}
|
m_Size: {x: 3.8, y: 1.1}
|
||||||
m_EdgeRadius: 0
|
m_EdgeRadius: 0
|
||||||
--- !u!1001 &1936744432
|
--- !u!1001 &1936744432
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
@ -6527,7 +6528,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8233114533063075529, guid: 82d871be611f9d14fbe8c166075c1a37, type: 3}
|
- target: {fileID: 8233114533063075529, guid: 82d871be611f9d14fbe8c166075c1a37, type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: -3.9000626
|
value: -3.900055
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8233114533063075529, guid: 82d871be611f9d14fbe8c166075c1a37, type: 3}
|
- target: {fileID: 8233114533063075529, guid: 82d871be611f9d14fbe8c166075c1a37, type: 3}
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
@ -6,6 +6,8 @@ public class Missile : MonoBehaviour
|
|||||||
{
|
{
|
||||||
//投掷物类,用来控制投掷物
|
//投掷物类,用来控制投掷物
|
||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
|
private bool amINoisy = false;//记录自己是否落地发出声音的变量
|
||||||
|
private bool amIBeenChecked = false;//记录自己是否已经被敌人检查过
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -16,4 +18,21 @@ public class Missile : MonoBehaviour
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnCollisionEnter2D(Collision2D other)
|
||||||
|
{
|
||||||
|
if(other.gameObject.tag == "地面")
|
||||||
|
{
|
||||||
|
//当投掷物砸到地面,发出一个响声(逻辑上),标记自身为声源
|
||||||
|
amINoisy = true;
|
||||||
|
//同时,摧毁自身的刚体组件,阻止其滚动
|
||||||
|
Destroy(GetComponent<Rigidbody2D>());
|
||||||
|
//再摧毁自身碰撞体
|
||||||
|
Destroy(GetComponent<BoxCollider2D>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AMINoisy(){return amINoisy;}
|
||||||
|
public bool AmIBeenChecked(){return amIBeenChecked;}
|
||||||
|
public void YouAreChecked(){amIBeenChecked = true;}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ public class Patrolman : MonoBehaviour
|
|||||||
public float walkSpeed;
|
public float walkSpeed;
|
||||||
[Tooltip("听见响动,冲锋时的速度")]
|
[Tooltip("听见响动,冲锋时的速度")]
|
||||||
public float rushSpeed;
|
public float rushSpeed;
|
||||||
|
[SerializeField][ReadOnly]
|
||||||
private float speed;//记录此刻瞬间的速度,不包含方向
|
private float speed;//记录此刻瞬间的速度,不包含方向
|
||||||
private float velocity;//速度,正值代表向右,用来判断面部朝向
|
private float velocity;//速度,正值代表向右,用来判断面部朝向
|
||||||
private Transform target;//当前目标位置
|
private Transform target;//当前目标位置
|
||||||
@ -38,6 +39,25 @@ public class Patrolman : MonoBehaviour
|
|||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
Move();//每帧朝目标移动
|
Move();//每帧朝目标移动
|
||||||
|
CheckMissiles();//检查是否有投掷物落地
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckMissiles()
|
||||||
|
{
|
||||||
|
foreach(Missile missile in missiles)
|
||||||
|
{
|
||||||
|
if(missile.AMINoisy() && !missile.AmIBeenChecked())//如果投掷物在发声、且没有被检查过
|
||||||
|
{
|
||||||
|
//将目标位置设定为落点
|
||||||
|
target = missile.transform;
|
||||||
|
//更改速度为跑步速度
|
||||||
|
speed = rushSpeed;
|
||||||
|
//标记该投掷物已被检查
|
||||||
|
missile.YouAreChecked();
|
||||||
|
isInterrupt = true;
|
||||||
|
PVelocity = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//朝目标移动函数
|
//朝目标移动函数
|
||||||
@ -48,12 +68,23 @@ public class Patrolman : MonoBehaviour
|
|||||||
velocity = Mathf.Abs(velocity)/velocity;//把速度标准化为1或者-1,只保留方向
|
velocity = Mathf.Abs(velocity)/velocity;//把速度标准化为1或者-1,只保留方向
|
||||||
velocity *= speed;//给速度赋以大小
|
velocity *= speed;//给速度赋以大小
|
||||||
|
|
||||||
//判断是否到达巡逻点
|
//判断是否到达巡逻点或者落点
|
||||||
if(velocity*PVelocity < 0 && !isInterrupt)//速度相乘得负数,说明方向发生改变
|
if(velocity*PVelocity < 0)//速度相乘得负数,说明方向发生改变
|
||||||
{
|
{
|
||||||
//如果计算速度发生改变,且不是因为被石头打断,说明经过了巡逻点,此时更换目标点为另一个
|
//如果计算速度发生改变,且不是因为被石头打断,说明经过了巡逻点,此时更换目标点为另一个
|
||||||
if(target.Equals(point1)) target = point2;
|
if(target.Equals(point1) && !isInterrupt) target = point2;
|
||||||
|
else if(target.Equals(point2) && !isInterrupt) target = point1;//不是被投掷物吸引的时候,才这样
|
||||||
|
|
||||||
|
//如果目标是投掷物的落点,恢复速度和目标点
|
||||||
|
if(target.gameObject.tag == "投掷物")
|
||||||
|
{
|
||||||
|
speed = walkSpeed;
|
||||||
|
//target = point2;
|
||||||
|
if(velocity > 0) target = point2;
|
||||||
else target = point1;
|
else target = point1;
|
||||||
|
Debug.Log("投掷物触发转向");
|
||||||
|
isInterrupt = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//控制面部朝向
|
//控制面部朝向
|
||||||
@ -74,6 +105,7 @@ public class Patrolman : MonoBehaviour
|
|||||||
|
|
||||||
//更新PVelocity
|
//更新PVelocity
|
||||||
PVelocity = velocity;
|
PVelocity = velocity;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnTriggerEnter2D(Collider2D other)
|
void OnTriggerEnter2D(Collider2D other)
|
||||||
@ -85,13 +117,6 @@ public class Patrolman : MonoBehaviour
|
|||||||
public void AddAMissile(Missile missile){missiles.Add(missile);}
|
public void AddAMissile(Missile missile){missiles.Add(missile);}
|
||||||
//在听觉范围中调用,移除一个监听中的投掷物
|
//在听觉范围中调用,移除一个监听中的投掷物
|
||||||
public void RemoveAMissile(Missile missile){missiles.Remove(missile);}
|
public void RemoveAMissile(Missile missile){missiles.Remove(missile);}
|
||||||
// for(int i = 0; i < missiles.Count; i++)
|
|
||||||
// {
|
|
||||||
// if(missiles[i].Equals(missile))
|
|
||||||
// {
|
|
||||||
// missiles.Remove(missile);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user