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.
时间: 2024-11-08 00:57:13