Unity2D平台跳跃游戏摄像机的区域限制

如上图:
有时候我们不希望摄像机在跟踪角色的时候会跑到背景地图之外的地方,这样会给人一种穿帮的感觉。
我们或许只希望摄像机的左边框移动到地图的左边缘处就停止跟踪,也就是图中粉色箭头画出的区域限制以内。
==========================后退!我要装逼了!====================
我一贯用的办法是这样的:


1.在摄像机上添加一个BoxCollider2D组件,并且打钩 ? Is Trigger 这一选项,然后编辑一下box的范围,使其尽量跟摄像机边缘对其,其实这个box什么用都没有,不执行任何的碰撞检测,目的只是为了通过BoxCollider2D组件的bounds.size.x属性÷2得到摄像机长度的一半。


2.接下来我们需要获得地图最左边和最右边的点的位置,跟摄像机一样,也是用BoxCollider2D组件,这样就能通过BoxCollider2D.bounds.min.x和max.x获得地图左右两边的X坐标了。


3.获得角色的x坐标,transform.position.x就可以直接拿到了。


4.开始逻辑的计算,逻辑上是这样实现的:

 1 if((角色当前的x坐标) > (地图最左边的点的x坐标 + 摄像机box的半径) && (角色当前的x坐标) < (地图最右边的点的x坐标 - 摄像机box的半径)){
 2     摄像机.transform.position = Vector3.Lerp(摄像机.transform.position,角色.transform.position,float);
 3 }
 4 else
 5 if((角色当前的x坐标) <= (地图最左边的点的x坐标 + 摄像机box的半径)){
 6     摄像机.transform.position = Vector3.Lerp(摄像机当前坐标,地图最左边的点的x坐标 + 摄像机box半径,float);
 7 }
 8 else
 9 if((角色当前的x坐标) >= (地图最右边的点的x坐标 - 摄像机box的半径)){
10     摄像机.transform.position = Vector3.Lerp(摄像机当前坐标,地图最右边的点的x坐标 - 摄像机box半径,float);
11 }

========================华丽的分割线====================

以上,就是实现摄像机区域限制的基本思路了。

转载于:https://www.cnblogs.com/maxhit/p/6502196.html

Unity中实现2D平台跳跃的方法有很多种,以下是其中一种实现方式: 1. 创建一个2D角色和一个平台,确保它们都有刚体组件。 2. 在角色上添加一个 Box Collider 2D 组件,并将其设置为触发器。 3. 在平台上添加一个 Box Collider 2D 组件,并将其设置为非触发器。 4. 在角色上添加一个 Rigidbody 2D 组件,并启用重力。 5. 在角色的脚下添加一个 Empty GameObject 作为 Ground Check,并将其命名为 "GroundCheck"。 6. 在 Ground Check 上添加一个 Box Collider 2D 组件,并将其设置为触发器。 7. 创建一个名为 "PlayerMovement" 的 C# 脚本,并将其附加到角色上。 8. 在 PlayerMovement 脚本中添加以下代码: ``` public class PlayerMovement : MonoBehaviour { public float speed = 5f; public float jumpForce = 10f; public Transform groundCheck; public float groundRadius = 0.2f; public LayerMask whatIsGround; private bool isGrounded; private Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(); } void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); rb.velocity = new Vector2(moveHorizontal * speed, rb.velocity.y); isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround); } void Update() { if (isGrounded && Input.GetKeyDown(KeyCode.Space)) { rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse); isGrounded = false; } } } ``` 9. 在 Unity 中选择角色并检查 PlayerMovement 脚本。将 Speed 和 Jump Force 设置为所需的值。 10. 运行游戏并尝试跳跃。如果一切正常,你的角色应该可以在平台上自由移动,并且可以通过按空格键来跳跃
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值