我试图在unity中添加一个拾取枪功能,但它给了我一个错误,我正在遵循本教程:-https://www.youtube.com/watch?v=aQoe2Oy78GU
这是我的代码
using System.Collections.Generic;
using UnityEngine;
public class PickupScript : MonoBehaviour
{
public float distance = 10f;
public float equipPosition;
GameObject currentWeapon;
bool canGrab;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void CheckGrab()
{
RaycastHit hit;
if (Physics.Raycast(transform.position,transform.forward,out hit,distance))
{
if (hit.transform.tag == "CanGrab")
{
Debug.Log("I can Grab it!");
currentWeapon = hit.transform.gameObject;
canGrab = true;
}
else
canGrab = false;
}
}
private void Pickup()
{
currentWeapon.transform.position = equipPosition.position;
currentWeapon.transform.parent = equipPosition;
currentWeapon.transform.localEulerAngles = new Vector3(0f, 180f, 180f);
currentWeapon.GetComponent<Rigidbody>().isKinematic = true;
Debug.Log("Picked it up");
}
}
错误为
严重性代码描述项目文件行禁止显示状态错误CS1061"float"不包含"position"的定义,并且没有可访问的扩展方法"position"接受第一个参数未能找到类型为"float"的(是否缺少using指令或程序集引用?(程序集CSharp E:\Unity\My游戏\资产\脚本\拾取脚本.cs 44活动
第二个错误是
严重性代码描述项目文件行禁止显示状态错误CS0029无法将类型"float"隐式转换为"UnityEngine.Transform"程序集CSharp E:\Unity\My游戏\资产\脚本\拾取脚本.cs 45活动
您的第一个错误:equipPosition
是一个浮点,其中没有position
的定义。position
可用于Transform
类型的对象。
您的第二个:equipPosition
是一个float,而不是Transform
对象,这意味着它不能用作对象的父对象。
您只需要将equipPosition
更改为转换类型的变量,一切都应该正常。
您正试图从浮点中获取一个位置。
public float equipPosition;
currentWeapon.transform.position = equipPosition.position;
你可能想要变身。