我需要幫助,我正在撰寫一個老板 AI,我似乎無法將變數添加到統一的位置。
這是代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FistScript : MonoBehaviour
{
public GameObject player;
public float offset;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position.x = new Vector2(player.transform.position.x offset, transform.position.y);
}
}
當我使用它時,我收到此錯誤:
'Assets\Scripts\FistScript.cs(18,9): 錯誤 CS1612: 不能修改'Transform.position'的回傳值,因為它不是一個變數'
如果可以的話請幫忙。
uj5u.com熱心網友回復:
您正在嘗試將 Vector2 分配給 float 屬性。transform.position 是具有屬性 x 和 y 的 Vector2 結構。所以你不能修改它們,因為它們是結構的屬性。要修改位置,您應該創建一個新的 Vector2 物件。
player.transform.position = new Vector2(player.transform.position.x offset, player.transform.position.y);
更簡單的變體:
player.transform.position = Vector2.right * offset;
uj5u.com熱心網友回復:
為了更新位置,您可以更新 transform.position,而不是 transform.position.x 即
//update the position
transform.position = transform.position new Vector3(horizontalInput * movementSpeed * Time.deltaTime, verticalInput * movementSpeed * Time.deltaTime, 0);
有關更多資訊,請參閱https://docs.unity3d.com/ScriptReference/Transform-position.html
uj5u.com熱心網友回復:
如果您只想更改 中的單個軸transfrom.position,則需要使用臨時 Vector2。這是如何做到的:
Vector2 temp_pos=transform.position;
temp_pos.x=player.transform.position.x offset
transform.position=temp_pos;
如果您想直接更新位置,那么您可以這樣做:
transform.position = new Vector2(player.transform.position.x offset, transform.position.y);
uj5u.com熱心網友回復:
你不能直接訪問 transform.position.x 因為它屬于位置的 Vector3 結構。我鼓勵你更好地理解C# 結構
float x;
float y;
float z;
void Move()
{
// THIS WORKS
transform.position = new Vector3(x,y,z);
// THIS DOESN'T WORK
transform.position = 23f;
transform.position.x = 10f;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/496192.html
