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

Unity 2017.4.0f1中PlayerCollision代码报CS0619错误求助

解决Unity 2017中CS0619过时API错误及碰撞检测问题

嘿,我来帮你搞定这个碰撞检测的问题!你的代码里有几个小错误,导致了过时API警告和功能失效,我一步步给你修正:

问题分析

  • 回调函数参数类型错误:OnCollisionEnter是Unity内置的碰撞回调函数,它的参数必须是Collision类型,而不是你写的PlayerCollision——这会导致碰撞事件根本无法正确触发。
  • 过时的GetComponent重载:你用的GetComponent<Collider>("obstacle")是已经被废弃的API,Unity 2017里会报CS0619警告,而且这个写法本身语法也不完整(少了闭合括号)。
  • 碰撞判断逻辑不规范:直接通过组件查找判断障碍物不是最佳实践,用**标签(Tag)**来区分对象更高效可靠。

修正后的代码

using UnityEngine;

public class PlayerCollision : MonoBehaviour {
    public PlayerMovement movement;

    // 修正参数类型为Collision
    void OnCollisionEnter(Collision collisionInfo) {
        // 使用Unity推荐的CompareTag方法检查对象标签
        if (collisionInfo.gameObject.CompareTag("obstacle")) {
            Debug.Log("We hit an obstacle!");
            // 可选:碰撞后禁用玩家移动(如果你的PlayerMovement脚本有enabled属性的话)
            // movement.enabled = false;
        }
    }
}

额外步骤(必须做!)

在Unity编辑器里给你的障碍物对象设置标签:

  • 选中场景中的障碍物对象
  • 在Inspector面板顶部的Tag下拉菜单中,选择obstacle(如果没有这个标签,点击Add Tag...创建它)

这样修改后,不仅能消除过时API的警告,碰撞检测的逻辑也能正常工作啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:22:42