2017-09-15 8 views
0

私は武器を使用するキャラクターを持っており、現在私はキャラクターの位置にスポーンするように設定しています。私はそのポジションを自分のキャラクターに少しプラス(x軸)にしたい。私はこれを行う方法の手掛かりがありませんし、Googleで答えを見つけることができませんでした。私は初心者ですので、具体的にしてください。ここに私のコードは次のとおりです。ユニティでUnity C#は "position + x、y、z"をインスタンス化しますか?

public float speed = 2f; 
Animator anim; 
private Rigidbody2D rb2d; 
public float jumpHeight = 20f; 
public GameObject weapon; 
private Vector2 playerPos; 
public GameObject player; 

private void Start() 
{ 
    anim = GetComponent<Animator>(); 
    rb2d = GetComponent<Rigidbody2D>(); 
} 
// Update is called once per frame 
void Update() { 

    playerPos = player.transform.position; 

    if (Input.GetKey(KeyCode.D)) 
    { 
     anim.SetInteger("State", 1); 
     transform.Translate(new Vector2(1f * speed * Time.deltaTime, 0f)); 
    } 

    if (Input.GetKeyUp(KeyCode.D)) 
    { 
     anim.SetInteger("State", 3); 
    } 

    if (Input.GetKey(KeyCode.A)) 
    { 
     anim.SetInteger("State", 2); 
     transform.Translate(new Vector2(-1f * speed * Time.deltaTime, 0f)); 
    } 

    if (Input.GetKeyUp(KeyCode.A)) 
    { 
     anim.SetInteger("State", 4); 
    } 

    if (Input.GetKey(KeyCode.P)) 
    { 
     rb2d.AddForce(Vector2.up * jumpHeight); 
    } 

    if (Input.GetKeyDown(KeyCode.O)) 
    { 
     Instantiate(weapon, playerPos, Quaternion.Euler(0, 0, -40)); 
    } 
} 
+0

をあなたはあなたの空のオブジェクトを追加することができますそれを参照として変換します。 –

+0

if節の量を置き換える(または少なくとも減らす)べきです。 [Delagate](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/)、[Action](https://msdn.microsoft.com/en-us/)を参照してください。 us/library/system.action)と[Func](https://msdn.microsoft.com/en-us/library/bb549151(v=vs.110).aspx) – Bakudan

答えて

2

Transform.positionVector3です。あなたは+オペレータと一緒に2 Vector3を追加することができます。

Vector3 result = myVectorA + myVectorB 
// or 
Vector3 result = new Vector3(5,6,7) + new Vector3(10,0,0) // result is (15,6,7) 

playerPosのx値に追加するには - あなたはそれがx値だとしてだけで必要な変換を持っているフルのVector3を追加する必要があります。

playerPos + new Vector3(100, 0, 0) 

ユニティのベクトル演算の詳細は、ここで見つけることができます:https://docs.unity3d.com/Manual/UnderstandingVectorArithmetic.html

と団結のこの答えはあなたにもちょうどplayerPos.xに直接割り当てることができない理由を説明します。http://answers.unity3d.com/questions/600421/how-to-change-xyz-values-in-a-vector3-properly-in.html

+0

ありがとうございました!これは私の問題を解決し、私は新しいことを学びました。 – Shanespeed

関連する問題