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 3.x(精灵的碰撞检测,点击移动与拖动精灵)

cocos2dx-精灵如何被渲染and纹理如何被管理产生与销毁

cocos2dx 3.x(点击屏幕移动精灵,拖动精灵)不需要写回调函数

cocos2dx 3.x(移动修改精灵坐标MoveTo与MoveBy)