我试图在Unity中实现塔防游戏,但我无法弄清楚如何为新的实例化对象分配速度或力(在创建者对象中)脚本) 我有一座塔,应该向敌人发射子弹,引发对撞机。这是塔的脚本:
function OnTriggerEnter(other:Collider){
if(other.name=="Enemy")
{
ShootBulletTo(other.transform);
}
}
function ShootBulletTo(target:Transform)
{//public var Bullet:Transform
var BulletClone = Instantiate(Bullet,transform.position, Quaternion.identity); // ok
BulletClone.AddForce(target.position); //does not compile since Transform.AddForce() does not exist.
}
我想问题是我必须使用Transform
变量进行实例化,但我需要一个GameObject
变量用于速度,力等等。那么如何用初始速度实例化子弹呢?
谢谢你的帮助。
答案 0 :(得分:2)
您必须访问项目符号克隆的刚体组件才能更改力,而不是变换。
以下是您的代码的外观:
function OnTriggerEnter(other:Collider)
{
if(other.name=="Enemy")
{
ShootBulletTo(other.transform);
}
}
function ShootBulletTo(target:Transform)
{
var Bullet : Rigidbody;
BulletClone = Instantiate(Bullet, transform.position, Quaternion.identity);
BulletClone.AddForce(target.position);
}
在Unity脚本参考中也有一个很好的例子 http://docs.unity3d.com/Documentation/ScriptReference/Object.Instantiate.html
[编辑]我很确定,你不想将敌人位置添加为力量,而是应该添加一个朝向敌人位置的方向。 你减去两个位置来获得它们之间的方向向量,所以ShootBulletTo函数应该如下所示:
function ShootBulletTo(target:Transform)
{
// Calculate shoot direction
var direction : Vector3;
direction = (target.position - transform.position).normalized;
// Instantiate the bullet
var Bullet : Rigidbody;
BulletClone = Instantiate(Bullet, transform.position, Quaternion.identity);
// Add force to our bullet
BulletClone.AddForce(direction);
}