Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
AngryEva游戏效果:
1
Spring Joint 2D —— 弹簧关节
Spring Joint 2D : 是Unity提供的一个弹簧关节组件,可通过AddComponent添加
Unity会自动模拟弹簧的物理效果,来执行函数,使物体具备同样的弹簧效果
注意:Spring Joint 2D 组件,需要指定链接一个的Rigidbody组件:
这个物体是所需固定位置的物体(且物体上必须有Rididbody组件)
在Spring Joint 2D组件下的 Connected Rigid Body 属性中添加
2
CameraFollow —— 相机跟随,插值
Mathf.Clamp(posX, 0, 18)
数学函数.范围(限定目标,0,到 18之间)
/// <summary>
/// 相机在指定范围跟随
/// </summary>
private void CameraFollow()
{
//记录Eva的横坐标
float posX = transform.position.x;
//相机当前位置 = 插值(当前相机位置,目标位置(Mathf.Clamp-限定范围:(限定posX,0,18之间))
Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, new Vector3(Mathf.Clamp(posX, 0, 18), Camera.main.transform.position.y, Camera.main.transform.position.z), SmoothFlo * Time.deltaTime);
}
3
RelativeVelocity —— 相对速度(- - 检测受伤的方式)
collision.relativeVelocity.magnitude > MaxSpeed
碰撞物体的.相对速度.大小 > 最大速度
/// <summary>
/// 触发检测,检测是否达到受伤条件
/// </summary>
/// <param name="collision"></param>
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Eva") //需在外部设置标签,给Eva物体设置Tag为Eva
{
AudioPlay(EvaHurtClip); //播放受伤音效
collision.transform.GetComponent<Eva>().Hurt(); //受伤
}
if (collision.relativeVelocity.magnitude > MaxSpeed) //如果相对速度.大小>最大速度
{
Dead(); //调用死亡消除方法
}
else if (collision.relativeVelocity.magnitude > MinSpeed && collision.relativeVelocity.magnitude < MaxSpeed) //相对速度在4-8之间
{
Render.sprite = HurtSprite; //更换图片,受伤
AudioPlay(HurtClip);
}
}
4
Eva —— 脚本
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
/// <summary>
/// Eva类脚本
/// </summary>
public class Eva : MonoBehaviour
{
public float MaxDis = 1.8f; //Eva可拖动最远距离
public float SmoothFlo = 3; //平滑度
[HideInInspector] public SpringJoint2D EvaSP; //弹簧链接组件
protected Rigidbody2D EvaRg; //刚体组件
public LineRenderer LeftLineRenderer; //左线组件
public Transform LeftPos; //弹弓左定点
public LineRenderer RightLineRenderer; //右线组件
public Transform RightPos; //弹弓右定点
protected GameObject EvaBoom; //Eva爆炸特效
protected MyTrail myTrail; //定义拖尾脚本对象
public AudioClip SelectEvaClip; //选中Eva音效
public AudioClip FlyEvaClip; //Eva飞出音效
protected SpriteRenderer EvaRender; //Eva渲染组件
public Sprite HurtSprite; //受伤图
[HideInInspector] public bool isCanTrail; //是否能拖拽
[HideInInspector] public bool isRelease; //是否释放Eva
private bool isClick; //是否点击
private bool isFly; //是否正在飞
private void Awake()
{
EvaSP = GetComponent<SpringJoint2D>(); //获取组件