0

こんにちは、ゲームで問題が発生しています。この問題は、素材を切り替えて反対方向に向けることに基づいています (これは 2D ゲームです)。これは renderer.material.mainTextureOffset によって制御されるアニメーションに影響しますが、これが機能しない理由はわかりません。

C# のコード:

using UnityEngine;
using System.Collections;

public class character : MonoBehaviour {
    public float forwardSpeed = 10.0f;
    public Material newMaterialRefcs1;
    public Material newMaterialRefcs2;
    // Use this for initialization
    void Start () {

    }
    //error is occurring here !!!!!!!! below Important. The 2 if statements below
    // Update is called once per frame
    void Update () {
    if( Input.GetKey(KeyCode.D)){
            renderer.material.mainTextureOffset = new Vector2(0.25f, 0);
            transform.position += -transform.right * forwardSpeed * Time.deltaTime;
                renderer.material = newMaterialRefcs1;

    }if( Input.GetKey(KeyCode.A)){
            renderer.material.mainTextureOffset = new Vector2(0.25f, 0);
            transform.position += transform.right * forwardSpeed * Time.deltaTime;
                renderer.material = newMaterialRefcs2;

    }

}}
4

3 に答える 3

0

他のシェーダを使用してみてください。たとえば、拡散します。

また、インスペクターで確認してください。この値は本当に変更されていますか。他のスクリプトで書き直してもらえますか?

于 2013-09-25T10:48:34.380 に答える
0

あなたの問題が正確にはわかりませんが、最初のスクリプトで 1 つの設定を調整してから、2 番目のスクリプトで新しいマテリアルを追加しようとしているようです。その場合、2 番目のスクリプトで新しいマテリアルを割り当てると、マテリアルが完全に置き換えrenderer.material.mainTextureOffset.xられます。つまり、最初に設定した が上書きされます。

2 番目のスクリプトで新しいテクスチャを追加するときに、新しいテクスチャに割り当てることができる別の変数にオフセットを保持してみてください。

于 2013-09-22T18:28:41.327 に答える