首页 > 代码库 > 疯狂喷气机小游戏总结

疯狂喷气机小游戏总结

2/3D游戏:2D

辅助插件:原生

游戏制作难度系数:初级

游戏教程网址:http://www.raywenderlich.com/69392/make-game-like-jetpack-joyride-unity-2d-part-1

1、控制摄像机跟随人物移动

    public GameObject targetObject; //目标对象    private float distanceToTarget;    void Start()    {        distanceToTarget = transform.position.x - targetObject.transform.position.x; //获取摄像机和对象在横坐标上的的距离    }    void Update()    {        float targetObjectX = targetObject.transform.position.x;        Vector3 newCameraPosition = transform.position;        newCameraPosition.x = targetObjectX + distanceToTarget;        transform.position = newCameraPosition; //更新摄像机的位置    }

2、检测对象是否落地

把floor地板层的Layer设置为Ground,对象的脚下设置一个监测点groundcheck,代码判断是否着地

 public LayerMask groundCheckLayerMask;//设置为地板层 public GameObject groundcheck; //监测点 bool isTouchGround; void CheckGround() {     isTouchGround = Physics2D.OverlapCircle(groundcheck.transform.position, 0.1f, groundCheckLayerMask); }
Physics2D.OverlapCircle用法如下:
static Collider2D OverlapCircle(Vector2 point, float radius, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth= Mathf.Infinity);
point:圆的中心
radius:圆的半径
layerMask:只在某些层过滤检测碰撞器
minDepth:只包括Z坐标(深度)大于这个值的对象
maxDepth:只包括Z坐标(深度)小于这个值的对象
描述:检测一个碰撞器是否与落在一个圆形区域(里面)。
圆形是由一个在世界空间中的中心点和它的半径定义出来的。层遮罩可以用于指定检测特定某些图层的对象。
虽然Z轴与2D的渲染或碰撞无关,但是你可以使用minDepth和maxDepth参数去排除一些对象基于他们的Z轴。如果有好几个碰撞器都落在(重叠)检测区域,那么最小的Z坐标的那个碰撞器将会被返回。如果没有碰撞器在区域中就返回Null了。
还要注意这个函数会分配内存给返回的Collider2D对象。在你需要频繁做这个检测的时候,可以使用OverlapCircleNonAlloc这个函数去避免这些开销。
还有这些: OverlapArea, OverlapPoint, OverlapCircleAll, OverlapCircleNonAlloc.

疯狂喷气机小游戏总结