Net Core教程

Unity3D C#学习之路(六)C# 下蹲

本文主要是介绍Unity3D C#学习之路(六)C# 下蹲,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
BoxCollider2D coll;
Vector2 collStandSize, collStandOffset, collCrouchSize, collCrouchOffset;
Vector2 headRayPos, headOffset;
bool isCrouch;
Public LayerMask groundLayer;  //吧地面拖进来,别忘了给地面加一个专属的Layer

void Start()
{
    coll = GetCompent<BoxCollider2D>();
    collStandSize = coll.size;    //获取一开始的碰撞体大小
    collStandOffset = coll.offset;    //获取一开始的碰撞体位置
    collCrouchSize = new Vector2(coll.size.x, coll.size.y / 2);  //获取下蹲时候的碰撞体大小
    collCrouchOffset = new Vector2(coll.offset.x, coll.offset.y / 2);    //获取下蹲时候的碰撞体位置
    headOffset = new Vecotr2(0f, coll.size.y);    //偏移量
    headRayPos = transform.position + headOffset;    //头顶的位置
}

void FixedUpdate()
{
    Crouch();    //下蹲函数
}

void PhysicsCheck()
{
    RaycastHit2d headCheck = Raycast(headRayPos, Vector2.up, 0.1f, groundLayer);    //在头顶上创建一个长度为0.1的射线
    if(headCheck)
        StandUp();  //调用站立函数
}

void Crouch()
{
    if(Input.GetButton("Crouch"))
    {
        isCrouch = true;
        coll.size = collCrouchSize;
        coll.offset = collCrouchOffset;
    }
}

void StandUp()
{
    coll.size = collStandSize;
    coll.offset = collStandOffset;
    isCrouch = false;
}

RaycastHit2D Raycast(Vecotr2 offset, Vector2 rayDiraction, float length, LayerMask layer)
{
    RaycastHit2D hit = Physics2D.Raycast(offset, rayDiraction, length, layer);
    return hit;
}

 

这篇关于Unity3D C#学习之路(六)C# 下蹲的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!