核心代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Author:圈毛君
/// MoveController:2019/10/18 20:50
/// </summary>
public class PlayerController : MonoBehaviour
{
public float exStepDistance = 3.0f; // 瞬步距离(速度)
private bool exStepEnabled = true; // 能否使用瞬步
public void MoveController()
{
if (Input.GetKey(KeyCode.A))
{
if (Input.GetKeyDown(KeyCode.LeftShift) && exStepEnabled)
{
float tempStepDistance = exStepDistance; // 临时瞬步距离
Vector3 temp = transform.position;
RaycastHit2D hit = Physics2D.Raycast(new Vector2(temp.x - 0.6f, temp.y), new Vector2(-1, 0), exStepDistance); // 使用Raycast解决穿墙问题
if (hit)
{// 仅通过Raycast判断还不能解决贴墙穿越的问题,需要在碰撞事件中进一步处理
tempStepDis