You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Unity与C#添加平台游戏Dash冲刺功能时如何获取玩家位置

Unity Dash冲刺传送方案实现说明

玩家位置获取方式

  • 如果冲刺逻辑脚本挂载在玩家 GameObject 上,直接读取transform.position即可拿到玩家当前的世界坐标,该属性本身是准确可用的
  • 如果脚本未挂载在玩家对象上,先在脚本中声明玩家对象引用,示例:
// 声明后可在Unity Inspector面板拖拽玩家对象完成赋值
public GameObject player;

后续通过player.transform.position即可获取玩家位置。

单轴数值提取方法

transform.position为Vector3类型,直接通过后缀.x/.y/.z即可单独提取对应维度的数值,示例:

// 提取x轴坐标
float playerPosX = transform.position.x;
// 提取y轴坐标
float playerPosY = transform.position.y;
// 提取z轴坐标
float playerPosZ = transform.position.z;

2D平台游戏横向Dash完整示例

你可以直接参考以下逻辑实现传送式冲刺:

using UnityEngine;

public class PlayerDash : MonoBehaviour
{
    // 冲刺距离,可在Inspector面板调整数值
    public float dashDistance = 3.5f;
    // 与现有移动脚本共用的朝向变量,1为朝右,-1为朝左
    private float faceDirection = 1f;

    void Update()
    {
        // 按左Shift触发冲刺,可自行替换为你需要的触发按键
        if(Input.GetKeyDown(KeyCode.LeftShift))
        {
            TriggerDash();
        }
    }

    void TriggerDash()
    {
        // 提取当前玩家各轴坐标
        float currentX = transform.position.x;
        float currentY = transform.position.y;
        // 计算冲刺后的新位置
        Vector3 dashTargetPos = new Vector3(currentX + faceDirection * dashDistance, currentY, transform.position.z);
        // 完成传送
        transform.position = dashTargetPos;
    }

    // 可对接现有移动脚本,更新面朝方向
    public void UpdateFaceDirection(float newDir)
    {
        faceDirection = newDir;
    }
}

可选优化点

  • 若要避免冲刺穿模,可在赋值目标位置前添加2D射线检测,判断冲刺路径上是否有碰撞体,动态调整最终的冲刺终点位置
  • 若为3D游戏,将朝向对应的计算轴改为z轴即可适配3D场景的冲刺逻辑

内容的提问来源于stack exchange,提问作者Yuval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:15:01