首页 > 其他 > 详细

疯狂喷气机小游戏总结

时间:2015-01-05 00:21:53      阅读:447      评论:0      收藏:0      [点我收藏+]

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这个函数去避免这些开销。
还有这些: OverlapAreaOverlapPointOverlapCircleAllOverlapCircleNonAlloc.

疯狂喷气机小游戏总结

原文:http://www.cnblogs.com/MrZivChu/p/RocketMouse.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!