ラベル ゲームサンプル の投稿を表示しています。 すべての投稿を表示
ラベル ゲームサンプル の投稿を表示しています。 すべての投稿を表示

2015年10月19日月曜日

Unityリソースから動的にスプライトを変更

Resources/Spritesフォルダをあらかじめ作成してそこにスプライトを入れてください。マルチスプライトを使用する場合は配列で取得してマルチスプライト名をFinedで取得します。

リソースフォルダからスプライトを取得
    public Sprite getSprite(string name) {
        
        // Resources/Sprites/SpritesName 

Sprite sp = Resources.Load<Sprite>("Sprites/"+name);
        return sp;
    }

ゲームオブジェクトのスプライトを変更
    public static void SetSprite(this GameObject go,Sprite sp)
    {
        SpriteRenderer sr;
        sr = go.GetComponent<SpriteRenderer>();

        sr.sprite = sp;
    }

2014年12月16日火曜日

移動に合わせてキャラクターの向きを8方向に変えるサンプル

矢印キー入力でプレイヤーの向きを変える方法。
右矢印キーと下矢印キーを同時押しすることで斜め右下に向きを変えます。
計算式はラジアン*180/円周率です。

以下サンプルソース

public void Update()  
//矢印キーでの移動
Vector3 vc1 = new Vector3 (Input.GetAxisRaw("Horizontal"), 0Input.GetAxisRaw ("Vertical"));
//角度を算出
  float kakudo = Mathf.Atan2(Input.GetAxisRaw("Horizontal"),Input.GetAxisRaw("Vertical"))*180/Mathf.PI;
//移動        transform.rigidbody.velocity = vc1;
//向きを変える
        transform.rotation = Quaternion.Euler (0kakudo0);

2014年7月30日水曜日

Unityで動的にオブジェクトを作成表示する

メインカメラに以下のスクリプトを登録して、
インスペクタからprefabに作成するオブジェクトを登録してください。

using UnityEngine;
using System.Collections;

public class NewObject : MonoBehaviour {
public GameObject prefab;
// Use this for initialization
void Start () {
for (int i = 0; i < 10; i++)
{
prefab.gameObject.name="object"+i;
Instantiate(prefab, new Vector3(0,10+3* i,0), Quaternion.identity);
}
}
void Update () {
if (Input.GetMouseButtonDown(0)) {

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();

if (Physics.Raycast(ray, out hit)){
GameObject obj = hit.collider.gameObject;
Debug.Log(obj.name);
}
}

}
}

objectNが10個作成されて上から降って着ます。
タッチしたオブジェクトの名前がログに表示されます。

Unityでタッチしたオブジェクトをドラックで移動させるサンプルソース

UNITYアイコン地表のオブジェクトをタッチで移動させるサンプルソースです。

currentPosition.y = 1f;
の部分でオブジェクトのy位置(高さ)は固定しています。

using UnityEngine;
using System.Collections;

public class TouchMove: MonoBehaviour {

private Vector3 objectPosition;
private Vector3 mouseOffset;

void OnMouseDown() {
this.objectPosition = Camera.main.WorldToScreenPoint(transform.position);
this.mouseOffset= transform.position - Camera.main.ScreenToWorldPoint
(new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPosition.z));
}

void OnMouseDrag() {
Vector3 currentMousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPosition.z);
Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentMousePosition) + this.mouseOffset;
currentPosition.y = 1f;
transform.position = currentPosition;
}
}

メインカメラのアングルはXを水平Zを垂直に見えるようにしてください。