【问题标题】:Throw GameObject diferences C# & JavaScript at Unity3D在 Unity3D 中抛出 GameObject 差异 C# 和 JavaScript
【发布时间】:2016-02-26 11:14:18
【问题描述】:

我正在使用 C# 开发 Unity 游戏。我需要从主摄像头扔一个物体。尝试用 Javascript 来做似乎可行,但我需要用 C# 来做,并模拟它不起作用的相同脚本行为。这些是我使用的代码:

Javascript(确实有效)

var vel : int = 2;      
var objeto : Transform;

function Start () {
}

function Update () {
    if (Input.GetKeyDown("mouse 1")){
        var generar = Instantiate (objeto, transform.position, Quaternion.identity);
        generar.GetComponent.<Rigidbody>().AddForce(transform.forward * 2000 * vel);
    }
}

C#(它创建 de 对象,但不施加力)

using UnityEngine;
using System.Collections;

public class LanzarCX : MonoBehaviour {

    public Transform objeto;
    public int vel= 2;

    void Start () {
    }

    void Update () {
        if (Input.GetKeyDown("mouse 1")){
            GameObject generar = Instantiate (objeto, transform.position, Quaternion.identity) as GameObject;
            generar.GetComponent<Rigidbody>().AddForce(transform.forward * 2000 * vel);
        }
    }
}

在这两种情况下,我都使用 2 作为 vel 值和相同的预制件。我做错了什么?谢谢

【问题讨论】:

  • 看不到变量 vel 的初始化,请确保 vel 大于 0。
  • 我同意,vel i C# 脚本似乎是 0
  • 你好 Chad,我在这两种情况下都使用 2 作为 vel 值,并且使用相同的 prefab 作为 objeto。谢谢
  • 看到它是一个公共变量,请确保在检查器中更改 vel 的值,而不仅仅是在脚本中。
  • JD

标签: c# unity3d unityscript


【解决方案1】:

您是否检查过 RigidBody 是否处于活动状态?根据统一 API: “力只能应用于活动刚体。如果游戏对象处于非活动状态,则 AddForce 无效。”此外,在您的 javascript 代码中,您不会乘以 vel

【讨论】:

  • 如何检查是否处于活动状态?我正在尝试,但仍然无法正常工作:GameObject generar = Instantiate (objeto, transform.position, Quaternion.identity) as GameObject; Rigidbody rb = generar.GetComponent&lt;Rigidbody&gt; (); if(!rb) this.gameObject.AddComponent&lt;Rigidbody&gt;(); rb.isKinematic = false; rb.detectCollisions = true; rb.AddForce(transform.forward * 2000 * vel); 来自 javascript 的 vel 问题是我的错,我在尝试删除它时复制了它。我将编辑帖子以修复它。谢谢
  • 顺便问一下,在堆栈溢出时是否可以在 cmets 使用良好的代码格式?我是新来的,现在还不知道怎么用
  • 不可能,不。仅内联
  • 要检查它是否处于活动状态,只需在检查器中查看它,就这么简单
  • 您可以使用 GameObject 的成员 'activeHierarchy' 进行检查。 docs.unity3d.com/462/Documentation/ScriptReference/…。 .您可以使用 GameObject.SetActive(true) 方法以编程方式激活 GameObject。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
相关资源
最近更新 更多