itemcontroller.java

来自「一个JAVA程序员的游戏」· Java 代码 · 共 72 行

JAVA
72
字号
/*
 * ItemController.java
 *
 * Created on 26. Dezember 2006, 16:40
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package kanjitori.graphics.item;

import com.jme.animation.SpatialTransformer;
import com.jme.math.FastMath;
import com.jme.math.Quaternion;
import com.jme.math.Vector3f;
import com.jme.scene.Controller;
import java.awt.Point;
import kanjitori.map.Content;
import kanjitori.graphics.item.Item;
import kanjitori.map.Map;

/**
 *
 * @author Pirx
 */
public class ItemController extends Controller {
    
    private Item item;
    private Point pos;
    private Map levelMap;
    
    
    /** Creates a new instance of ItemController */
    public ItemController(Item item, Map levelMap) {
        this.item = item;
        this.levelMap = levelMap;
        pos = levelMap.findFreePos();
        item.getNode().setLocalTranslation(new Vector3f(2 * pos.x, -0, 2 * pos.y));
        levelMap.setContent(pos.x, pos.y, Content.ITEM);
        SpatialTransformer st = new SpatialTransformer(1);
        st.setObject(item.getNode(), 0, -1);
        st.setRepeatType(Controller.RT_WRAP);
        item.getNode().addController(st);
        st.setPosition(0, 0f, new Vector3f(2 * pos.x, -0.3f, 2 * pos.y));
        st.setPosition(0, 2f, new Vector3f(2 * pos.x, -0.1f, 2 * pos.y));
        st.setPosition(0, 4f, new Vector3f(2 * pos.x, -0.3f, 2 * pos.y));

        Vector3f up = new Vector3f(0,1,0);
        Quaternion x0=new Quaternion();
        x0.fromAngleAxis(0, up);
        st.setRotation(0, 0f, x0);
        Quaternion x180=new Quaternion();
        x180.fromAngleAxis(FastMath.PI, up);
        st.setRotation(0, 2f, x180);
        Quaternion x360=new Quaternion();
        x360.fromAngleAxis(2*FastMath.PI, up);
        st.setRotation(0, 4f,x360); 
        
        st.setNewAnimationTimes(0, 4);
        st.setCurTime(0);
        st.interpolateMissing();
    }

    public void update(float f) {
        if (item.checkPlayerCollision()) {
            levelMap.setContent(pos.x, pos.y, Content.EMPTY);
            item.consume();
        }
    }
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?