[Unity] [Javascript]为什么这些简单的js脚本在Unity中不起作用?

时间:2015-08-25 02:18:26

标签: unity3d unityscript

我一直在教自己,并在youtube上向Jimmy Vegas学习:https://www.youtube.com/channel/UCRMXHQ2rJ9_0CHS7mhL7erg

如果你还没有看到这些教程或者不想看,那么他所做的一件事就是创建一个小脚本,当玩家对撞机撞到它时会摧毁硬币,但我的并不是。工作。下面的代码(有点格式错误,抱歉,无法正确格式化):

function OnCollisionEnter (collision : Collision) {
  if(collision.gameObject.tag == "coinCollect") {
    Destroy(this.gameObject);
  } 
}

我将脚本应用到预制件上并在一个小区域周围放置了一堆硬币,另外,我在第一人称控制器上制作了一个胶囊对撞机标记了" coinCollect",并勾选了#34; Is触发"

另外,我试图制作一个传送器,将第一个人物角色从一个传送器传送到另一个传送器。代码如下:

var warptarget001 : GameObject;
var warptarget002 : GameObject;
function OnTriggerEnter (col : Collider) {
  if (col.gameObject.tag == "warp001") {
    this.transform.position = warptarget002.position;
  } else if (col.gameObject.tag == "warp002") {
    this.transform.position = warptarget001.position;
  }
}

我这里有四个物体,两个经编垫和两个经线目标。这两个经垫标有" warp001"和" warp002"分别和两个warp目标在代码中没有分配任何内容,而是通过将空对象拖放到脚本提供的序列化字段中来分配。两个垫都有胶囊碰撞器,其中有#34; Is Trigger"未经检查但它不会以任何方式工作,勾选或未选择。

谁能告诉我自己可能做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

脚本都是正确的,我的问题是我的父母" FPSController"对象没有应用Rigidbody,应该是应用脚本的唯一对象(与#34; FirstPersonCharacter"嵌套在其中的对象相对)。这似乎解决了这个问题。

正确的代码是:

/* coincollect.cs */
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class coincollect : MonoBehaviour {

private int _score;

[SerializeField]
private Text _text;

void  OnTriggerEnter ( Collider collision  ){

    if(collision.gameObject.tag == "coin"){

        Destroy(collision.gameObject);
        _score++;

        _text.text = "Score: " + _score;

    }   
  }
} 

/* warp.js */
var warptarget001 : GameObject;
var warptarget002 : GameObject;

function OnTriggerEnter (col : Collider) {

if (col.gameObject.tag == "warp001") {
    this.transform.position = warptarget002.transform.position;
    }

if (col.gameObject.tag == "warp002") {
    this.transform.position = warptarget001.transform.position;
    }
}