cocos2dx 中如何把精灵移动到触摸点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos2dx 中如何把精灵移动到触摸点相关的知识,希望对你有一定的参考价值。
参考技术A 在onToucheBegan里面设置精灵的position就好了auto sp = this->getChildByTag(123); //假设精灵tag为123
CCPoint touchLocation = touch->getLocation(); // Get the touch position
touchLocation = this->convertToNodeSpace(touchLocation); //转换坐标系
sp->setPosition(touchLocation);本回答被提问者和网友采纳 参考技术B 用触摸代理里的move方法获取触摸点,然后用update给精灵发送不同的地址不就ok了嘛
如何在触摸屏幕时移动精灵并在我点击屏幕时禁用
【中文标题】如何在触摸屏幕时移动精灵并在我点击屏幕时禁用【英文标题】:how to move the sprite when touch the screen and disable when I tap the screen 【发布时间】:2019-04-18 20:40:21 【问题描述】:我正在制作一个游戏,我在屏幕上移动一个精灵,但如果我点击屏幕,它会移动到那个位置,我只希望它在我将手指放在屏幕上时移动,这样精灵就会跟随我的手指,它不会通过我的物体传送
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)
for touch in touches
let touchLocation = touch.location(in: self)
player.position.x = touchLocation.x
我试过这个(玩家是我的精灵)并且它有效,当我移动我的手指时,精灵会跟随,但是如果我点击屏幕一侧的 fx,它会传送到那个位置而我没有希望发生这种情况。
【问题讨论】:
你想让它动画到新的位置吗?或者根本没有移动,因为它最初没有被按下来拖动? 如果我只是在屏幕上按下它不应该移动到那个位置,但是如果我在屏幕上拖动我的手指它应该跟随,但我不知道该怎么做。跨度> 【参考方案1】:试试下面的代码:
var isDragging = false
var player = /* SKSpriteNode or whatever */
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
if let touch = touches.first
let touchLocation = touch.location(in: view)
if player.contains(touchLocation)
isDragging = true
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)
guard isDragging else return
if let touch = touches.first
let touchLocation = touch.location(in: view)
player.position.x = touchLocation.x
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?)
isDragging = false
touchesBegan - 使用contains()
确保触摸位置在播放器内的某个位置。
touchesMoved - 如果正在拖动播放器,请将播放器移动到触摸的位置。
touchesEnded - 当触摸结束时,拖动将停止。
【讨论】:
@frederikNiebling 很高兴听到!以上是关于cocos2dx 中如何把精灵移动到触摸点的主要内容,如果未能解决你的问题,请参考以下文章
cocos2dx里精灵从某一位置经过moveTo方法移动到已知点,怎么让它回原来位置?有没有方法?
cocos2dx 3.x(精灵的碰撞检测,点击移动与拖动精灵)
cocos2dx-精灵如何被渲染and纹理如何被管理产生与销毁