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;
}
2015年10月19日月曜日
2014年12月16日火曜日
移動に合わせてキャラクターの向きを8方向に変えるサンプル
矢印キー入力でプレイヤーの向きを変える方法。
右矢印キーと下矢印キーを同時押しすることで斜め右下に向きを変えます。計算式はラジアン*180/円周率です。
以下サンプルソース
public void Update()//矢印キーでの移動
Vector3 vc1 = new Vector3 (Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw ("Vertical"));
//角度を算出
float kakudo = Mathf.Atan2(Input.GetAxisRaw("Horizontal"),Input.GetAxisRaw("Vertical"))*180/Mathf.PI;
//移動 transform.rigidbody.velocity = vc1;
//向きを変える
transform.rotation = Quaternion.Euler (0, kakudo, 0);
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個作成されて上から降って着ます。
タッチしたオブジェクトの名前がログに表示されます。
インスペクタから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でタッチしたオブジェクトをドラックで移動させるサンプルソース
地表のオブジェクトをタッチで移動させるサンプルソースです。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を垂直に見えるようにしてください。
登録:
投稿 (Atom)
