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你有没有弄明白这一点?