私はcameraPositionが格納されたデータクラスを持っています。私のコントローラクラスでUnityは、一時変数を作成せずに値を変更します。
public Vector3 CameraPosition { get { return CameraTransform.position; } } // current position of the camera
、私はこの
void Move() // move with the camera
{
if (Input.GetKey("w") || data.MousePos.y >= Screen.height - data.BorderSize)
data.CameraPosition.z += data.MovementSpeed * Time.deltaTime;
if (Input.GetKey("s") || data.MousePos.y <= data.BorderSize)
data.CameraPosition.z -= data.MovementSpeed * Time.deltaTime;
if (Input.GetKey("d") || data.MousePos.x >= Screen.width - data.BorderSize)
data.CameraPosition.x += data.MovementSpeed * Time.deltaTime;
if (Input.GetKey("a") || data.MousePos.x <= data.BorderSize)
data.CameraPosition.x -= data.MovementSpeed * Time.deltaTime;
}
void Scroll() // scroll the camera
{
data.CameraPosition.y -= data.ScrollInput * data.ScrollSpeed * Time.deltaTime;
}
を変更したいので、実際には、コンパイラは私が一時変数を作成したいと考えています。 data.CameraPosition
は変更できません。
一時変数なしでこれを行う方法はありますか?
そうでなければ、私は
private void Update()
{
Vector3 pos = data.CameraPosition;
pos = Move(pos);
pos = Scroll(pos);
pos = LimitValues(pos);
data.CameraPosition = pos;
}
Vector3 Move(Vector3 pos)
{
if (Input.GetKey("w") || data.MousePos.y >= Screen.height - data.BorderSize)
pos.z += data.MovementSpeed * Time.deltaTime;
if (Input.GetKey("s") || data.MousePos.y <= data.BorderSize)
pos.z -= data.MovementSpeed * Time.deltaTime;
if (Input.GetKey("d") || data.MousePos.x >= Screen.width - data.BorderSize)
pos.x += data.MovementSpeed * Time.deltaTime;
if (Input.GetKey("a") || data.MousePos.x <= data.BorderSize)
pos.x -= data.MovementSpeed * Time.deltaTime;
return pos;
}
Vector3 Scroll(Vector3 pos)
{
pos.y -= data.ScrollInput * data.ScrollSpeed * Time.deltaTime;
return pos;
}
Vector3 LimitValues(Vector3 pos)
{
pos.x = ClampMovement(data.CameraPosition.x, data.MapLimit.x);
pos.y = ClampScroll(data.CameraPosition.y);
pos.z = ClampMovement(data.CameraPosition.z, data.MapLimit.y);
return pos;
}
を書かなければならないだろうと私は思う、これは本当に本当に悪いに見えます。
たぶん誰かがトリックを知っている:)
どれでも特別な理由:ところで
は、
data.CameraPosition = pos;
を使用するために、あなたは値を割り当てセッターが必要になるだろうか? – apk