网格设置
在Grid里右击>2D Object>Tilemap创建新网格并取名OneWayPlatform
创建新图层取名OneWayPlatform并将OneWayPlatform的图层选上
为OneWayPlatform添加一下四个组件
Platform Effector 2D组件中的Collider Mask的多选项中选择可以穿过单向平台的图层
Tile设置
设置单向平台Tile的碰撞盒子点击Sprite Editor
进入Sprite Editor
1.选择为Custom Physics Shape模式
2.点击单向平台的图片
3.开启Generate模式
随后修改单向平台的碰撞范围
点击线条增加操作点(不知道怎么叫)
点击操作点然后按Del键可删除
根据实际情况设置吧
完成后点击Apply应用
每次修改完碰撞范围就要重选一下Tilemap Collider 2D才会应用新的碰撞范围
代码部分
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public Transform groundCheck;//检测位置
public float checkRadius;//检测范围大小
public LayerMask oneWayPlatformLayerMask;//检测对象
public bool isOneWayPlatform;//是否在单向平台上
void Update()
{
//判断是否不在跳跃动画或者在下落动画中
if(!anim.GetCurrentAnimatorStateInfo(0).IsName("player_jump") ||
anim.GetCurrentAnimatorStateInfo(0).IsName("player_fall"))
isOneWayPlatform = OnOneWayPlatform();//获取当前角色是否在单向平台上
}
//是否在单向平台上
bool OnOneWayPlatform()
{
Collider2D Coll = Physics2D.OverlapCircle(groundCheck.position, checkRadius, oneWayPlatformLayerMask);
if (Coll != null)
return true;
else
return false;
}
}
在Player(控制的人物)添加一个子对象在脚下用来检测单向平台
设置代码
全部完成后,就可以跳上单向平台了