已回答 将投射物传送到播放器,而不是克隆。 (统一2d)

BLSturton

新成员
已加入
2020年9月19日
留言内容
1
编程经验
Beginner
我正在尝试使2D平台化。玩家可以在其中射击弹丸。我一直在跟踪他们制作的教程,因此项目符号会自动复制它。我想要它,以便子弹可以传送到玩家并移动(以便一次只能在屏幕上显示1个。)但是他有它,因此子弹可以自己克隆。我认为问题出在第15行,但我不确定该怎么办。任何帮助将是巨大的!
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerAttack : MonoBehaviour
{
     public Transform firePosition;
     public GameObject projectile;
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetButton("Fire1"))
         {
             Instantiate(projectile, firePosition.position, firePosition.rotation);
         }       
     }
}

这是上下文的视频

添加评论
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,441
位置
弗吉尼亚州切萨皮克
编程经验
10+
欢迎来到论坛。以后请在代码标签中发布您的代码。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,441
位置
弗吉尼亚州切萨皮克
编程经验
10+
I've not viewed the video link, but I would assume that is the same place where it is also cloned as well. So don't call Instantiate(). Just change the position of the projectile back to the starting position and rotation that you want instead of letting it clone another copy.
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,888
位置
英国
编程经验
10+
我也没有看过视频,但我从文档中回想起了这些,文档中的内容看起来非常熟悉 Unity-脚本API:Object.Instantiate

我建议您克隆对象,并为旋转或角度设置一个新矢量,并在影响或超出可见距离时销毁原始对象。

我还建议您通过阅读Unity提供的文档来学习,而不要遵循教程,该教程中的代码由于Unity引擎中的更新而常常无法反映当前的现代API。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,441
位置
弗吉尼亚州切萨皮克
编程经验
10+
OP正在寻求实现类似《雷神之锤》或《美国队长》的盾牌之类的东西,游戏中只有一个这样的物体,但并没有看到物品飞回玩家,而是立即返回了玩家。如果世界上只有一个项目,为什么还要创建一个新项目呢?只是改变它的位置。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,888
位置
英国
编程经验
10+
抱歉,我没有时间坐在那里看教程。但是,如果您看一下我链接的文档,它们与所使用的代码非常相似。

您阅读我链接跳伞运动员的文档了吗?

如果他们想保留当前对象,那么简单地更改位置可能会起作用,或者看起来很怪异。反复试验...尝试找出答案
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,441
位置
弗吉尼亚州切萨皮克
编程经验
10+
是的,我阅读了文档。它说它克隆了传入的对象。OP正在询问如何不克隆该对象。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,888
位置
英国
编程经验
10+
我没有指示他克隆对象。也许我会更清楚:
克隆对象后 您还可以使用GetComponent在附加到克隆对象的特定组件上设置属性。
我看不到如何无法在当前对象上调用GetComponent来设置新参数。假设它们要返回弹丸?然后,GetComponent会按照文档的建议进行工作。 OP将需要撤消最初启动的操作,以从该对象来自的另一个对象实例化该对象。您知道我正在忙于新的CMS项目,因此目前无法写出全新的脚本。

我还应该指出,这是第三方产品,因此对它的任何支持都将受到限制,因为它不直接是C#问题,而是Unity脚本问题。快速搜索GetComponent解释了如何使用它,只需稍加挖掘,便可以提出一些建议 类似 这个脚本: //forum.unity.com/threads/how-change-object-direction-after-collision.543150/

我也将其标记为已回答,因为目前正在以最佳的建议和意见来回答,除非其他人希望自愿为OP编写整个脚本...
 
最佳 底部