gpt4 book ai didi

c# - 沿 Y 位置移动玩家

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:09 26 4
gpt4 key购买 nike

我最近从 SpriteKit 和 Swift 转向了 Unity,并且开始了一个 Android 项目。我想要的是仅沿着 Y 位置上下移动播放器。在 xcode 中我会简单地这样做:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let action = SKAction.moveToY(location.y, duration: 0.7)
action.timingMode = .EaseInEaseOut
player.runAction(action)
}
}

这种代码会以相同的方式转换为 C# 吗?或者它的工作方式不同。

**更新**

这是我尝试使用以下答案之一的代码,但玩家正在消失而不是移动,有什么建议吗?我所追求的是让玩家移动到屏幕被点击的位置,但仅限于 Y 轴。谢谢:)

 Vector2 touchPosition;
[SerializeField] float speed = 1f;

void Update() {

for (var i = 0; i < Input.touchCount; i++) {

if (Input.GetTouch(i).phase == TouchPhase.Began) {

// assign new position to where finger was pressed
transform.position = new Vector3 (transform.position.x, Input.GetTouch(i).position.y, transform.position.z);

}
}
}

最佳答案

您可以移动场景中的任何对象,方法是从该对象的脚本调用 transform.Translate(),或者通过获取对另一个对象的转换的引用并对其调用 Translate()。

根据手指移动移动当前脚本的场景对象

Vector2 touchDeltaPosition;
[SerializeField] float speed = 1f;

void Update() {

for (var i = 0; i < Input.touchCount; i++) {

if (Input.GetTouch(i).phase == TouchPhase.Moved) {

// get new finger position
touchDeltaPosition = Input.GetTouch(i).deltaPosition;

// move scene object along y axis
transform.Translate(0f, -touchDeltaPosition.y * speed, 0f);

}

}

}

将当前脚本的场景对象移动到手指按下位置

void Update() {

for (var i = 0; i < Input.touchCount; i++) {

if (Input.GetTouch(i).phase == TouchPhase.Began) {

// assign new position to where finger was pressed
transform.position = new Vector3 (transform.position.x, Input.GetTouch(i).position.y, transform.position.z);

}

}

}

关于c# - 沿 Y 位置移动玩家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32252732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com