我一直在四处寻找,试图找到这个问题的答案,但什么也没找到。我正在尝试创建一个简单的答题器游戏,但是一开始就卡住了......这不太好。我想要做的是在触摸后给玩家钱(现在只是加1 +),并在文本对象中产生“+ 1 $”。似乎没有出现对象。我也做了一个“动画”,我不确定它是否做得很好。这两个类:触摸后没有实例化的对象
public class TapTextMovement : MonoBehaviour {
private int frameCount = 0;
private float temp;
public int modifier = 0;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
if (frameCount < 40) {
temp = this.transform.position.y + 1F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else if (frameCount < 50) {
temp = this.transform.position.y + 0.5F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else if (frameCount < 55) {
temp = this.transform.position.y + 0.3F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else if (frameCount < 60) {
temp = this.transform.position.y + 0.15F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else {
Object.Destroy (this);
}
frameCount++;
}
}
和:
public class MoneyTap : MonoBehaviour {
public GameObject money;
private Text moneyText;
public long moneyAmount = 0;
public GameObject tapText;
private Vector2 tempPos;
private Vector3 fullPos;
void Start() {
moneyText = money.GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
moneyText.text = moneyAmount + "$";
if (Input.touchCount > 0) {
if (Input.GetTouch (0).phase == TouchPhase.Began) {
tempPos = Input.GetTouch(0).position;
fullPos = new Vector3 (tempPos.x, tempPos.y, 0);
RaycastHit2D hitInfo = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (Input.GetTouch(0).position), Vector2.zero);
if (hitInfo) {
moneyAmount++;;
Instantiate(tapText, fullPos, Quaternion.identity);
}
}
}
}
}
我是一个有点新的团结,帮助每一位将不胜感激!谢谢!
只是一个建议,不要在**更新**中创建动画,因为它会影响性能,因为这些更改每帧渲染一次执行 –
是否有替代方法?为什么不这样做?我想改变它的位置每帧一秒或两秒,然后删除它。每个框架的对象将上升一个#的不情愿,为什么我现在想这样? –