C# 我子弹的位置不起作用
MovePosition函数在我的脚本中不起作用: 我试着让它成为肯尼派并增加力量。我还尝试在inspector中增加速度。我尝试添加强制并使更新函数成为“FixedUpdate” 这是我的更新功能中的内容:C# 我子弹的位置不起作用,c#,unity3d,C#,Unity3d,MovePosition函数在我的脚本中不起作用: 我试着让它成为肯尼派并增加力量。我还尝试在inspector中增加速度。我尝试添加强制并使更新函数成为“FixedUpdate” 这是我的更新功能中的内容: if (target != null) { Action(target); GameObject TemporaryBulletHandler; TemporaryBulletHandl
if (target != null)
{
Action(target);
GameObject TemporaryBulletHandler;
TemporaryBulletHandler = Instantiate(Sphere, Bullet_Emitter.transform.position, Bullet_Emitter.transform.rotation) as GameObject;
Rigidbody TemporaryRigidBody;
TemporaryRigidBody = TemporaryBulletHandler.GetComponent<Rigidbody>();
float step = speed * Time.deltaTime;
pos = Vector3.MoveTowards(transform.position, target.position, step);
TemporaryRigidBody.MovePosition(pos);
Destroy(TemporaryBulletHandler, 10.0f);
if(目标!=null)
{
行动(目标);
游戏对象临时BulletHandler;
TemporaryBulletHandler=实例化(球体、子弹头发射器.transform.position、子弹头发射器.transform.rotation)作为游戏对象;
刚体时间刚体;
TemporaryRigidBody=TemporaryBulletHandler.GetComponent();
浮动步长=速度*时间.deltaTime;
pos=矢量3.向(变换位置、目标位置、步长)移动;
时间刚体移动位置(pos);
销毁(临时BulletHandler,10.0f);
创建的球体不会移动。根据刚体。MovePosition创建平滑移动,因此需要在固定更新的每一帧调用它
unity文档中的示例:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public Vector3 teleportPoint;
public Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void FixedUpdate() {
rb.MovePosition(transform.position + transform.forward * Time.deltaTime);
}
}
使用UnityEngine;
使用系统集合;
公共类示例类:单一行为{
公共向量3传送点;
公共刚体;
void Start(){
rb=GetComponent();
}
void FixedUpdate(){
rb.MovePosition(transform.position+transform.forward*Time.deltaTime);
}
}
如果你想传送刚体,你应该看看If(target!=null)
{
行动(目标);
游戏对象临时BulletHandler;
TemporaryBulletHandler=实例化(球体、子弹头发射器.transform.position、子弹头发射器.transform.rotation)作为游戏对象;
刚体时间刚体;
TemporaryRigidBody=TemporaryBulletHandler.GetComponent();
浮动步长=速度*时间.deltaTime;
TemporaryRigidBody.MovePosition(transform.position+(target.position-transform.position).normalized*step);
销毁(临时BulletHandler,10.0f);
您应该将脚本应用于项目符号预制,并将移动代码添加到该脚本的FixedUpdate方法中,以便每个项目符号自行处理其移动逻辑。如果将上述代码放在Update()中,则项目符号将在同一位置实例化(在本例中为bullet_发射器)在每一帧中,你不会看到它在移动,它只是在每一帧中一次又一次地生成。要解决这个问题,你可以将实例化代码放在Update()之外,并将项目符号放在Update()中。不鼓励只使用代码的答案,因为它们不会为将来的读者提供太多信息。请对你所写的内容提供一些解释
if (target != null)
{
Action(target);
GameObject TemporaryBulletHandler;
TemporaryBulletHandler = Instantiate(Sphere, Bullet_Emitter.transform.position, Bullet_Emitter.transform.rotation) as GameObject;
Rigidbody TemporaryRigidBody;
TemporaryRigidBody = TemporaryBulletHandler.GetComponent<Rigidbody>();
float step = speed * Time.deltaTime;
TemporaryRigidBody.MovePosition ( transform.position +(target.position - transform.position ). normalized * step );
Destroy(TemporaryBulletHandler, 10.0f);