C# 错误CS0120:访问非静态成员'UnityEngine.Collision.gameObject';

C# 错误CS0120:访问非静态成员'UnityEngine.Collision.gameObject';,c#,unity3d,C#,Unity3d,首先,我要说我是一个完全的初学者,通过拼凑教程和类似网站的部分,我才走到了这一步 我想做的就是做一个只有站在上面才能移动的平台 using UnityEngine; using System.Collections; public class MovingPlatform : MonoBehaviour { public bool isPlayerOn; [SerializeField] Transform platform; [SerializeField] Transform st

首先,我要说我是一个完全的初学者,通过拼凑教程和类似网站的部分,我才走到了这一步

我想做的就是做一个只有站在上面才能移动的平台

using UnityEngine;
using System.Collections;

public class MovingPlatform : MonoBehaviour
{

public bool isPlayerOn;


[SerializeField]
Transform platform;

[SerializeField]
Transform startTransform;

[SerializeField]
Transform endTransform;

[SerializeField]
float platformSpeed;

Vector3 direction;
Transform destination;


void OnCollisionEnter (Collision other) {

    if (Collision.gameObject.tag == "Player") {
        isPlayerOn = true;
    }

}


void OnCollisionExit (Collision other) {

    if (Collision.gameObject.tag == "Player") {
        isPlayerOn = false;
    }

}

void Start (){
    SetDestination (startTransform);
}



void FixedUpdate(){
    platform.rigidbody.MovePosition (platform.position + direction * platformSpeed * Time.fixedDeltaTime);

    if (Vector3.Distance (platform.position, destination.position) < platformSpeed * Time.fixedDeltaTime) {
        SetDestination (destination == startTransform ? endTransform : startTransform);
    }
}


void SetDestination(Transform dest){
    destination = dest;
    direction = (destination.position -platform.position).normalized;
}

}
使用UnityEngine;
使用系统集合;
公共类移动平台:MonoBehavior
{
公共图书馆;
[序列化字段]
转换平台;
[序列化字段]
转化开始转化;
[序列化字段]
变换端点变换;
[序列化字段]
浮动平台速度;
矢量3方向;
转换目的地;
无效碰撞中心(碰撞其他){
如果(Collision.gameObject.tag==“Player”){
isPlayerOn=true;
}
}
void OnCollisionExit(碰撞其他){
如果(Collision.gameObject.tag==“Player”){
isPlayerOn=假;
}
}
无效开始(){
设置目的地(开始转换);
}
void FixedUpdate(){
平台.刚体.移动位置(平台.位置+方向*平台速度*时间.固定时间);
if(矢量3.距离(平台.位置,目的地.位置)<平台速度*时间.固定时间){
SetDestination(destination==startTransform?endTransform:startTransform);
}
}
无效设置目标(转换目标){
目的地=目的地;
方向=(destination.position-platform.position)。标准化;
}
}
现在我不知道这是否会起作用,我设法消除了大约9个其他错误,但这次没有


Assets/MovingPlatform.cs(31,31):错误CS0120:访问非静态成员“UnityEngine.Collision.gameObject”需要对象引用试图将代码更改为:

void OnCollisionEnter (Collision other) {

    if (other.gameObject.tag == "Player") {
        isPlayerOn = true;
    }

}
而不是:

if (Collision.gameObject.tag == "Player") {
错误是告诉您在
Collision
类上没有名为
gameObject
的静态成员。要调用非静态成员,需要对象引用。在本例中,对象引用似乎应该是传递给此方法的
other
实例

您可能还想对静态和非静态进行一些搜索。这里有一些很好的答案:

可能是
其他.gameObject.tag
而不是
碰撞.gameObject.tag
?@Snuffleupagus你有没有弄明白这一点?